2012-11-08 65 views
1

我有一個通用的方法,我想對其進行約束。簡單類型和字符串的約束

public T MyMethod<T>(object obj) where T : ??? 

約束是所有簡單類型int,bool等,但我也需要允許字符串。我有一種限制這個羣體的方法嗎?

+3

爲什麼你需要這個?這聽起來像一個坦率的奇怪的約束,因爲這些類型沒有共同之處。 –

+2

http://stackoverflow.com/questions/32664/c-sharp-generic-constraint-for-only-integers – Habib

+1

不幸的是,沒有。它並不完全是你想要的,但你可能會因爲IComparable而受到限制。 –

回答

1

沒有什麼內容與您想要的完全匹配,但IConvertible可能會這樣做 - 它包含將值轉換爲所有'核心'類型(包括string)的方法,並由您提到的所有核心類型實現。

BCL文檔建議您不要直接使用此類型,而應根據需要使用Convert.ChangeTypeConvert.ToXXX方法之一。

0

我相信結構會給你你正在尋找的所有類型的sans字符串。它也允許任何已經定義的,這是你將有任何解決方案的問題。老實說,雖然這似乎可能超過工程。你應該再次考慮你的要求,看看這是否真的需要。