2011-01-30 61 views
3

解析的在this話題,人們可以找到解決方案,使這提供了從字符串中解析到泛型參數類型的泛型類。但是,可能會發生給予此參數的類型不提供此類轉換。有沒有一種方法可以確保這一點?約束迫使通用參數是從串

UPDATE: 謝謝您的解答。但是我知道我通常可以制約。問題是:是否有任何類型的接口,Convert.ChangeType不會失敗,實現。或者是所有類型都使用Parse(string)方法實現的。

+0

這裏有兩個問題:一個是,你不能把接口加入到現有的類型,你不能使用鴨打字的泛型約束。這將很難解決。 – siride 2011-01-30 16:49:22

回答

3

因爲,正如我在我的評論說,你不能添加接口特定類型,也可以使用泛型類型約束鴨打字,你可能不得不寫出來有點哈克的解決方案。我認爲你最好的選擇是對你的解析函數做一些重載,一個用於每個基本類型(int,char,string等),然後提供一個具有IConvertible作爲通用約束的通用函數。編譯器會選擇正確的過載,或者在不可轉換類型的情況下根本沒有。

+0

想到也許已經存在所需的接口。無論如何,這就是答案。謝謝。 – 2011-01-30 16:53:43

2

您需要使用Type Constraints限制可以在泛型類使用什麼類型的對象。您應該定義一個可用於執行該轉換的接口,並將該接口設置爲約束。