早上好,下午或晚上,
在实施时,例如ICollection<KeyValuePair<TKey, TValue>>
或IDictionary<TKey, TValue>
,有什么方法可以强制TKey
和TValue
为不同的类型?我知道我可以在typeof(TKey) == typeof(TValue)
时在构造函数中抛出异常,但这似乎不是最优雅也不是最正确的解决方案...
非常感谢。
答案 0 :(得分:3)
我怀疑还有什么更好的。在.net中,你只限于一小组内置约束,而这不是其中之一。
答案 1 :(得分:2)
您可以使用Code Contracts显式显示条件,同时将检查保留在构造函数中。
public class MyDictionary : IDictionary<TKey, TValue>
{
public MyDictionary()
{
Contract.Requires(typeof(TKey) != typeof(TValue));
}
}