首页 > 解决方案 > 将单例类重构为基本泛型类

问题描述

我有两个单例类,它们完全共享实现,只是对象类型不同。因为我知道将来我会继续添加更多具有相同实现的单例类型,所以我认为将单例类重构为通用基类是个好主意。但是,我有错误,如下面的片段所示,我不知道如何将单例实现到基泛型类中。

public class BaseClass<T> where T: new()
{
   //Singleton instance 
   protected static readonly Lazy<T> _instance = new Lazy<T>(() => new T (param)); //Error on new T
   protected static SqlTableDependency<TableC> tableDependency;

   //Constructor
   private T(IHubConnectionContext<dynamic> clients)
   {
       Clients = clients;

        _tableDependency = new SqlTableDependency<TableC>(
            ConfigurationManager.ConnectionStrings["DBConnectionString"].ConnectionString, "TableC");
   }
   //Properties
   public static T Instance
   {
        get
        {
            return _instance.Value;
        }
    }

    private IHubConnectionContext<dynamic> Clients
    {
        get;
        set;
    }
}

标签: c#design-patternssingleton

解决方案


推荐阅读