我有一個通用的方法,我想對其進行約束。簡單類型和字符串的約束
public T MyMethod<T>(object obj) where T : ???
約束是所有簡單類型int,bool等,但我也需要允許字符串。我有一種限制這個羣體的方法嗎?
我有一個通用的方法,我想對其進行約束。簡單類型和字符串的約束
public T MyMethod<T>(object obj) where T : ???
約束是所有簡單類型int,bool等,但我也需要允許字符串。我有一種限制這個羣體的方法嗎?
沒有什麼內容與您想要的完全匹配,但IConvertible
可能會這樣做 - 它包含將值轉換爲所有'核心'類型(包括string
)的方法,並由您提到的所有核心類型實現。
BCL文檔建議您不要直接使用此類型,而應根據需要使用Convert.ChangeType
或Convert.ToXXX
方法之一。
我相信結構會給你你正在尋找的所有類型的sans字符串。它也允許任何已經定義的,這是你將有任何解決方案的問題。老實說,雖然這似乎可能超過工程。你應該再次考慮你的要求,看看這是否真的需要。
爲什麼你需要這個?這聽起來像一個坦率的奇怪的約束,因爲這些類型沒有共同之處。 –
http://stackoverflow.com/questions/32664/c-sharp-generic-constraint-for-only-integers – Habib
不幸的是,沒有。它並不完全是你想要的,但你可能會因爲IComparable而受到限制。 –