我有幾個是單身類,所以我試圖創建getInstance方法(PARAMS)和派生類父BaseClass的,應該實現此方法,並返回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型的經驗也是如此,所以任何意見都歡迎。 感謝
編輯:
或者是否有可能以某種方式定義在基地的GetInstance()方法,所以派生類不需要ovwerride它,但它會從那裏返回類的實例它被稱爲... Derived.GetInstance()將返回派生
應該這個類有什麼目的? IoC容器很可能會更合適。 – Groo
我將有更多的單身人士,因此我想拉起邏輯中的方式,從母公司靜態繼承方法總是可以返回從那裏它被稱爲(即使它是從後代)類型的實例創建實例 – Zavael
這裏類似的討論http://www.codeguru.com/forum/showthread.php?t=376943,它看起來像有沒有辦法強迫後代是單身,看起來像我想要的東西奇怪.. :( – Zavael