Jak utworzyć ogólną singletonową klasę bazową C # [duplikat]

To pytanie ma już tutaj odpowiedź:

Jaki jest dobry wzorzec szablonu dla pojedynczego wątku w C # 22 odpowiedzi

Próbuję utworzyć ogólną singletonową klasę bazową, taką jak

public class SingletonBase<T> where T : class, new()
{
    private static object lockingObject = new object();
    private static T singleTonObject;
    protected SingletonBase()
    {

    }

    public static T Instance
    {
        get
        {
            return InstanceCreation();
        }
    }
    public static T InstanceCreation()
    {
        if(singleTonObject == null)
        {
             lock (lockingObject)
             {
                  if(singleTonObject == null)
                  {
                       singleTonObject = new T();
                  }
             }
        }
        return singleTonObject;
    }
}

Ale muszę zrobić konstruktora jako publicznego w pochodnym.

public class Test : SingletonBase<Test>
{
    public void A()
    {

    }
    private Test()
        : base()
    { }
}

Błąd kompilacji:

„Test” musi być typem nie-abstrakcyjnym z publicznym konstruktorem bez parametrów, aby użyć go jako parametru „T” w typie ogólnym lub metodzie „Test”

Jak mogę to osiągnąć?

questionAnswers(2)

yourAnswerToTheQuestion