检查类型是否实现了具有特定类型T </t,>的IDictionary <t,v =“”>

时间:2014-10-27 12:22:28

标签: c# .net generics dictionary

我想知道,在.NET中,是否可以检查给定Type是否实现IDictionary<T, V>,其中T(密钥类型)是特定类型。

我有一个方法:

public bool CanConvert(Type objectType) {}

我希望对于这样的类型返回true:

Dictionary<Amount, double>
Dictionary<Amount, string>
Dictionary<Amount, whatever>
IDictionary<Amount, double>
IDictionary<Amount, whatever>

所以我不关心价值的类型,只要密钥类型是Amount(我的一类)。

其他词典(例如IDictionary<string, string>)应该返回false。

如果您想知道:这是针对自定义JSON.NET转换器的。

有可能吗?我知道我可以检查它是否是字典或IDictionary:

var implementsDictionary 
    = objectType
          .GetInterfaces()
          .Any(x => x.IsGenericType 
                    && x.GetGenericTypeDefinition() == typeof (IDictionary<,>));

var isDictionary 
    = objectType
          .IsGenericType 
          && objectType.GetGenericTypeDefinition() == typeof(IDictionary<,>);

但是如何检查密钥类型?

0 个答案:

没有答案