我有两个不同的包,比如 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
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消