2012-12-08 32 views
-3

...參數約束,而不考慮下面的例子仿製藥

public class Example 
{ 
    public static T GetDefaultValue<T>() 
    { 
    // return ??? 
    } 
} 

不使用泛型,我可以用什麼辦法來約束在傳遞給GetDefaultValue功能的一類與實現IDisposable參數的構造函數的類型? 我將如何實例化該類型的實例以從GetDefaultValue函數返回?

+2

我不明白,你的例子類有通用的'T' –

回答

2

我很困惑你的意思..但不使用泛型(沒有泛型?),你可以將類型約束到一個接口。

public ISomeInterface GetDefaultValue(ISomeInterface theObject) 
{ 
    ... 
} 
0

有了泛型,你可以做

public static T GetDefaultValue<T>() where T : new(), IDisposable 
{ 
    return new T(); 
} 

任何類型的設置T是必須有一個默認的構造函數,雖然。這樣,如果GetDefaultValue()返回IDisposable,那麼調用GetDefaultValue()將會得到您需要的精確類型,而無需投射。

我假設你不想要泛型解決方案,因爲實例化泛型類型的能力不是衆所周知的。我個人偶然發現了這個,男孩,這是救命吧!