我想知道,在.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<,>);
但是如何检查密钥类型?