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)));
}