C# 检查指定类型是否与泛型类型匹配?

C# 检查指定类型是否与泛型类型匹配?,c#,.net,generics,.net-4.0,C#,.net,Generics,.net 4.0,假设我有以下词典: protected Dictionary<Type, Type> MatchingTypes = new Dictionary<Type, Type>() { { typeof(ObservableList<>), typeof(XmlDataModel.XmlObjectCollection<>) } }; 这对于非泛型类型很好,但是对于上面的泛型类型,此方法不会返回true 有人能概述一下我如何修改代码使这个方法适

假设我有以下词典:

protected Dictionary<Type, Type> MatchingTypes = new Dictionary<Type, Type>()
{
    { typeof(ObservableList<>), typeof(XmlDataModel.XmlObjectCollection<>) }
};
这对于非泛型类型很好,但是对于上面的泛型类型,此方法不会返回true

有人能概述一下我如何修改代码使这个方法适用于泛型类型吗

谢谢, 亚历克斯

public CheckTypesMatch(Type one, Type two)
{
    return MatchingTypes.Any(kv => ((kv.Key == one && kv.Value == two) || (kv.Value == one && kv.Key == two)));
}
CheckTypesMatch(typeof(ObservableList<>), typeof(XmlDataModel.XmlObjectCollection<>))
public bool CheckTypesMatch(Type one, Type two)
{
    var one2 = one.IsGenericType ? one.GetGenericTypeDefinition() : one;
    var two2 = two.IsGenericType ? two.GetGenericTypeDefinition() : two;

    return MatchingTypes.Any(
        kv => ((kv.Key == one2 && kv.Value == two2) 
            || (kv.Value == one2 && kv.Key == two2)));
}