Предположим, у меня есть:
class MyBase<T1, T2>{}
class MyConcreteBase<T2> : MyBase<ConcreteType1, T2>{}
class MyConcrete1 : MyConcreteBase<ConcreteType2>{}
class MyConcrete2 : MyBase<ConcreteType1, ConcreteType2>{}
Как получить типы T1
и T2
, если у меня есть экземпляр MyConcrete1
или MyConcrete2
или MyConcreteBase
или любой другой экземпляртип, полученный из MyBase<T1, T2>
То, как я делаю это сейчас, я "встаю" по цепочке наследования, используя .GetType().BaseType
, тогда как BaseType.Name.StartsWith("MyBase")
, а затем использую .GetGenericArguments()
Itработает, но я не удовлетворен этим, особенно .StartsWith("MyBase")
часть.
У кого-нибудь есть другие предложения?