Здравствуйте, Sinclair, Вы писали:
D>>Возможно ли при вызовые B.GetInstance() в статическом методе GetInstance понять,
D>>что тип класса не A а B, преобразовать его и создать новый экземпляр?
S>Рекомендую сделать так:
S>public class Singleton<T>
S> where T : Singleton<T>, new()
S>{
S> public static T Instance
S> {
S> get
S> {
S> return new T(); // заменить на код получения единственного экземпляра типа T.
S> }
S> }
S>}
А разве имеет смысл (если синглетоны вообще смысл имеют) делать открытый (то есть доступный всем) конструктор у синглетона? ИМХО, суть синглетона как раз в том, что _нельзя_ получить более одного экземпляра синглетона (не зря синглетонами называют именно _типы_ а не что-то ещё). Если эта суть нарушается, то такой синглетон превращается в самую обычную глобальную переменную

Тогда уж точно можно (то есть лучше) обойтись любым DI-контейнером.