执行不同类型的参数

时间:2011-03-26 14:38:41

标签: c# generics type-parameter

早上好,下午或晚上,

在实施时,例如ICollection<KeyValuePair<TKey, TValue>>IDictionary<TKey, TValue>,有什么方法可以强制TKeyTValue为不同的类型?我知道我可以在typeof(TKey) == typeof(TValue)时在构造函数中抛出异常,但这似乎不是最优雅也不是最正确的解决方案...

非常感谢。

2 个答案:

答案 0 :(得分:3)

我怀疑还有什么更好的。在.net中,你只限于一小组内置约束,而这不是其中之一。

答案 1 :(得分:2)

您可以使用Code Contracts显式显示条件,同时将检查保留在构造函数中。

public class MyDictionary : IDictionary<TKey, TValue>
{
    public MyDictionary()
    {
        Contract.Requires(typeof(TKey) != typeof(TValue));
    }
}