如何通过检查父类上的泛型参数来获取子类类型
本文关键字:参数 获取 子类 类型 泛型 何通过 检查 父类 | 更新日期: 2023-09-27 17:52:53
示例:
public class MyClass : AbstractClass<UserDTO>
{
public MyClass()
{
}
public string Property1 { get; set; }
public string Property2 { get; set; }
}
是否可以通过检查UserDTO对象来获得MyClass的类型?如果是,如何?TIA
我想你在问这样的问题:
在
AbstractClass<T>
中,有没有一种方法,在T
的类型为UserDTO
的情况下,我可以确定类别X
的类型,其中class X : AbstractClass<UserDTO>
如果这确实是你的问题,那么简短的回答是"是"。然而,实现这一目标的道路有点曲折。
第一步,使用例如https://stackoverflow.com/a/4692463/7122.
下一步,对于每个类型,使用BaseType
属性来获取其父类型。如果该类型是AbstractClass
,则检查其GenericTypeArguments
属性以查看它是否是UserDTO
。如果是,那就是你的类型。
但是,可能有多个类从AbstractClass<UserDTO>
继承,因此您必须检查所有类型来检查这一点,而不是在第一个匹配时停止。
如果你有一个UserDTO类的实例,而没有其他东西,那么我看不出你能以任何方式看到MyClass的拥有实例或类型-你如何区分它和不在MyClass上的UserDTO?抱歉