强制仿制药不属于同一类型?强制泛型只能是给定类型的子类型?
问题描述:
我有一个功能需要两种仿制药<C, M>
。我想强制typeof(C) != typeof(M)
,这可能吗?强制仿制药不属于同一类型?强制泛型只能是给定类型的子类型?
我已经阅读了MSDN page for type constraints,它看起来像我只能限制在“正”情况下(where C: <class>|<interface>|<generic>
),但不是在负面情况下(where C: !<class>|!<interface>|<!<generic>
)。
对我来说,另一种解决方案是强制泛型类型成为给定类型的子类,但不是该类型本身。我怀疑这是可能的。
答
不 - 在C#或CLR中都没有这样的概念。
没有为编译时检查。但是,您仍然可以使用Type.Equals(Type)
和Type.IsAssignableFrom(Type)
进行运行时检查。
Jon Skeet发表了演讲。 – KDecker