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

我有两个不同的包,比如 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方法变量分配给类级别的属性或变量,并且对于任何类型的包都应该是动态的。


请帮助解决这个问题


元芳怎么了
浏览 124回答 1
1回答

隔江千里

您需要提取这些对象共享的公共接口或抽象类(或普通类,只是一些公共部分)。它们有相应的名称,表明它们很相似。也许它们具有相同或相似的公共方法(可能不是全部,而是一些)、公共属性或事件。你需要重构你的代码,将那些常见的东西提取到一个实体中,并让 T 在泛型类中实现它:public&nbsp;class&nbsp;GenericSingleton<T>&nbsp;where&nbsp;T&nbsp;:&nbsp;ICommonInterface
打开App,查看更多内容
随时随地看视频慕课网APP