我需要检测IDictionary<string, string>
类型的对象是否为IDictionary<,>
,并且我无法提出正确的比较逻辑。
我尝试了以下内容:
typeof(IDictionary<string, string>)
.GetInterface(typeof(IDictionary<,>).Name);
和
typeof(IDictionary<string, string>)
.GetGenericTypeDefinition()
.GetInterface(typeof(IDictionary<,>).Name);
调用typeof(Dictionary<string,string>).GetInterface(comparisonType.Name)
会返回预期的非null结果,但如果我在IDictionary<string,string>
类型上进行比较,则GetInterface()
将返回null。同样,在GenericTypeDefinition上进行比较也会返回null。
答案 0 :(得分:8)
typeof(IDictionary<string, string>).GetGenericTypeDefinition() == typeof(IDictionary<,>)
答案 1 :(得分:3)
static void Main(string[] args)
{
var x = typeof(IDictionary<string, string>);
var y = typeof(IDictionary<,>);
Console.WriteLine(x.GetGenericTypeDefinition() == y);
}
返回true