强制泛型不是同一类型?强制泛型只是给定类型的子类型?

时间:2016-04-27 18:54:39

标签: c# generics

我有一个函数需要两个泛型<C, M>。我想强制typeof(C) != typeof(M),这可能吗?

我已经阅读了MSDN page for type constraints,看起来我只能约束&#34;肯定&#34; case(where C: <class>|<interface>|<generic>)但不是负面情况(where C: !<class>|!<interface>|<!<generic>)。

对我来说,另一个解决方案是强制泛型类型是给定类型的子类,但不是该类型本身。我怀疑这是可能的。

1 个答案:

答案 0 :(得分:3)

  

不 - 在C#或CLR中都没有这样的概念。

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

没有编译时检查。但是,您仍然可以使用Type.Equals(Type)Type.IsAssignableFrom(Type)进行运行时检查。