我正在尋找一個C#替代C++ typedefs或特定類在特定情況下。我知道沒有直接的等價物,但是對於這個特定的問題,可能還有其他解決方案?C#中的靜態派生類型?
這是我想要做的。我正在編寫一個有三種相關類型的框架。視圖,後備存儲和工廠。所有三個接口將會有多個實現。視圖與工廠之間存在1-1關係,視圖與存儲之間存在1-N關係。一個具體的impl。的框架看起來像這樣:
Storage : IStorage<int> ...
View : IView<Storage> ... // And IView<T> : IViewNonGeneric further up..
Factory : IFactory<Storage> {
// This needs to take a concrete storage type as arg
IViewNonGeneric CreateView(Storage s) ...
Storage CreateStorage() ...
}
View類是框架用戶最重要的類;其他的都是一些實現細節。因此,根據View類來定義工廠(而不是根據存儲)看起來更自然。在C++中,這將是簡單的,只需添加一個typedef到視圖,並在工廠裏使用它,就像這樣:
class IView<typename T> { typedef T TStorage; ...
class IFactory<typename T> {
IViewNonGeneric CreateView(typename T::TStorage s) ...
在C#中,我們顯然不具備的typedef或traits類。有沒有其他的方式來達到預期的效果?也就是說,是否可以使用View作爲Factory的通用參數,並從View中派生出具體的Source類型?
是不夠的,使用'where'仿製藥申報約束的類型必須實施? – Tigran 2012-01-02 10:38:03