我有一个函数需要两个泛型<C, M>
。我想强制typeof(C) != typeof(M)
,这可能吗?
我已经阅读了MSDN page for type constraints,看起来我只能约束&#34;肯定&#34; case(where C: <class>|<interface>|<generic>
)但不是负面情况(where C: !<class>|!<interface>|<!<generic>
)。
对我来说,另一个解决方案是强制泛型类型是给定类型的子类,但不是该类型本身。我怀疑这是可能的。
答案 0 :(得分:3)
不 - 在C#或CLR中都没有这样的概念。
来源:https://stackoverflow.com/a/8727539
没有编译时检查。但是,您仍然可以使用Type.Equals(Type)
和Type.IsAssignableFrom(Type)
进行运行时检查。