partial class Repository<TEntity> : IRepository<TEntity> where TEntity : class{}
我的通用存储库为TEntity实现了一组通用的方法
public TEntity Get(int ID){ return _context.Set<TEntity>() .Find(ID);}public TEntity Get(Expression<Func<TEntity,bool>> predicate){ return _context.Set<TEntity>()}
我可以访问
Repository<User>().Get();
许多存储库执行相同的 *** 作集,因此它很有用,但现在我想扩展Repository< User>支持一些额外的行为.
partial class Repository<User> : IRepository<User> { public user DoMagicFunction() { }}
所以我可以像使用存储库一样
Repository<User>().DoMagicFunction();
如何为Some Tentity扩展相同的泛型类以扩展新行为而不是修改它.
我可以像创建另一个UserRepository来支持新功能一样,但访问者将成为
UserRepository.DoMagicFunction();
但我希望它像
Repository<User>().DoMagicFunction();解决方法 您可以使用扩展方法:
public static class ExtensionMethods { public static User DoMagicFunction(this Repository<User> repository) { // some magic return null; //or another user } }
因此,这将以一种语法上很好的方式将函数添加到Repository< User>对象.
如果您不仅要为用户提供支持,还要为用户的子类提供支持,您可以使该功能通用:
public static class ExtensionMethods { public static TEntity DoMagicFunction<TEntity>(this Repository<TEntity> repository) where TEntity : User { // some magic return null; //or another TEntity } }总结
以上是内存溢出为你收集整理的C#:扩展泛型类全部内容,希望文章能够帮你解决C#:扩展泛型类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)