假设我有:
class MyBase<T1, T2>{}
class MyConcreteBase<T2> : MyBase<ConcreteType1, T2>{}
class MyConcrete1 : MyConcreteBase<ConcreteType2>{}
class MyConcrete2 : MyBase<ConcreteType1, ConcreteType2>{}
如果我有
MyConcrete1
、MyConcrete2
或者MyConcreteBase
的实例,或者任何从MyBase<T1, T2>
派生的类型的实例,我该如何获取T1
和T2
的类型?目前我的做法是使用.GetType().BaseType
沿着继承链向上查找,同时判断BaseType.Name.StartsWith("MyBase")
,然后使用.GetGenericArguments()
。虽然这种方法可以正常工作,但我并不满意,特别是.StartsWith("MyBase")
这一部分。请问还有其他建议吗?