2016-04-27 142 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