2016-04-27 147 views
0

我有一個功能需要兩種仿製藥<C, M>。我想強制typeof(C) != typeof(M),這可能嗎?強制仿製藥不屬於同一類型?強制泛型只能是給定類型的子類型?

我已經閱讀了MSDN page for type constraints,它看起來像我只能限制在「正」情況下(where C: <class>|<interface>|<generic>),但不是在負面情況下(where C: !<class>|!<interface>|<!<generic>)。

對我來說,另一種解決方案是強制泛型類型成爲給定類型的子類,但不是該類型本身。我懷疑這是可能的。

回答

3

不 - 在C#或CLR中都沒有這樣的概念。

來源:https://stackoverflow.com/a/8727539

沒有爲編譯時檢查。但是,您仍然可以使用Type.Equals(Type)Type.IsAssignableFrom(Type)進行運行時檢查。

+3

Jon Skeet發表了演講。 – KDecker