Это мой абстрактный класс, который должен производиться каждый раз, когда я хочу создать Singleton :
public abstract class Singleton where T : Singleton
{
private static readonly Lazy _instance = new Lazy(() =>
{
var constructor = typeof(T).GetConstructor(BindingFlags.NonPublic |
BindingFlags.Instance, null, new Type[0], null);
return (T)constructor.Invoke(null);
});
public static T Instance { get { return _instance.Value; } }
public Singleton() { }
}
Итак, каждый раз, когда мне нужно следовать шаблону проектирования Singleton, я могу просто сделать следующее:
sealed class Server : Singleton
{
private Server() { }
...
}
Это полностью правильно, и, если нет, то почему?
Изменить:
Edit: