C#:扩展泛型类
发布时间:2020-12-15 23:49:55 所属栏目:百科 来源:网络整理
导读:partial class RepositoryTEntity : IRepositoryTEntity where TEntity : class{} 我的通用存储库为TEntity实现了一组通用的方法 public TEntity Get(int id){ return _context.SetTEntity() .Find(id);}public TEntity Get(ExpressionFuncTEntity,bool pred
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 } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |