4
一種考慮下面的類層次結構確定是否類是與多個泛型參數
public abstract class MyGenericClass<T1, T2>
{
public T1 Foo { get; set; }
public T2 Bar { get; set; }
}
public class BobGeneric : MyGenericClass<int, string>{}
public class JimGeneric : MyGenericClass<System.Net.Cookie, System.OverflowException>{}
我本來以爲我可以做到以下幾點
//All types in the assembly containing BobGeneric and JimGeneric
var allTypes = _asm.GetTypes();
//This works for interfaces, but not here
var specialTypes = allTypes.Where(x => typeof(MyGenericClass<,>).IsAssignableFrom(x))
//This also fails
typeof(BobGeneric).IsSubclassOf(typeof(MyGenericClass<,>)).Dump();
我怎麼會在確定的子類代碼BobGeneric
繼承自MyGenericClass
?
不得不更改爲'typeof(MyGenericClass <,>).IsAssignableFrom(typeof(BobGeneric).BaseType.GetGenericTypeDefinition())',但很多感謝指向正確的方向 – Joe
我從一個類型參數轉到了兩個。 'typeof(MyGeneric <>)'不再工作。這是由於缺少逗號'<,>'。 –
@MikedeKlerk:的確,你可以有幾個同名的類,只要它們接受不同數量的通用參數即可。因此,「MyGeneric <>」,「MyGeneric <,>」,「MyGeneric <,,>」等都是不同的類別。 –