У меня есть пара классов, которые являются одиночными, поэтому я попытался создать родительский BaseClass с методом GetInstance (params) и производными классами, которые должны реализовать этот метод и возвращать экземпляры theiselfs (поэтому мне не нужно их приводить). .. поскольку они являются синглетонами, метод должен быть статическим, но его нельзя переопределять статическими методами. Каков был бы лучший подход для его кодирования? пример кода, что я хотел:
public class Base {
public static virtual T GetInstance<T>() where T : class;
}
public class Derived {
Derived instance;
public static override T GetInstance<T>() where T : typeOf(this){
if (instance == null) {
instance = new Derived();
}
return instance;
}
}
в коде за пределами этого я хочу позвонить
Derived.GetInstance().SomeDerivedMethod()
не
(Derived.GetInstance() as Derived).SomeDerivedMethod() and not
new Derived().getInstance().SomeDerivedMethod()
Я знаю, что это нехорошо, и у меня тоже нет опыта работы с T-типом, поэтому любые советы приветствуются.
спасибо
EDIT:
Или, если возможно, каким-либо образом определить метод GetInstance () в Base, поэтому производному классу не нужно переопределять его, но он вернет экземпляр класса, из которого он был вызван ... Derived.GetInstance () вернет экземпляр Derived