C#:扩展泛型类

C#:扩展泛型类,第1张

概述partial class Repository<TEntity> : IRepository<TEntity> where TEntity : class{} 我的通用存储库为TEntity实现了一组通用的方法 public TEntity Get(int id){ return _context.Set<TEntity>() .Find(id);}publi
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#:扩展泛型类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1221176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存