为了账号安全,请及时绑定邮箱和手机立即绑定

C# - 如何在属性或变量中分配泛型类型

C# - 如何在属性或变量中分配泛型类型

C#
元芳怎么了 2021-06-21 09:10:43
我有两个不同的包,比如 WebBundle 和 MobileBundle,我有一个单例通用类,它具有任何包的类型(在下面添加了通用单例代码)。public class GenericSingleton<T> where T : class, new(){    private static readonly object padlock = new object();    private GenericSingleton() { }    private static T instance = null;    public static T Instance {         get        {            lock (padlock)            {                if (instance == null)                {                    instance = new T();                }                return instance;            }        }    }}当我执行以下行时,var web = GenericSingleton<WebBundle>.Instance;我在 web 变量中获取 webbundle 类的实例,intellisense 为我提供了 WebBundle 中的所有可用方法。现在我的要求是将此var web方法变量分配给类级别的属性或变量,并且对于任何类型的包都应该是动态的。请帮助解决这个问题
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

您需要提取这些对象共享的公共接口或抽象类(或普通类,只是一些公共部分)。它们有相应的名称,表明它们很相似。也许它们具有相同或相似的公共方法(可能不是全部,而是一些)、公共属性或事件。你需要重构你的代码,将那些常见的东西提取到一个实体中,并让 T 在泛型类中实现它:

public class GenericSingleton<T> where T : ICommonInterface


查看完整回答
反对 回复 2021-06-26
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信