【发布时间】:2009-10-06 09:35:08
【问题描述】:
如何使用反射获取某个类的父类名称?
【问题讨论】:
标签: .net reflection
如何使用反射获取某个类的父类名称?
【问题讨论】:
标签: .net reflection
像这样:
typeof(Typ).BaseType.Name
【讨论】:
TypeOf(Typ).GetType().BaseType.Name
TypeOf 不返回值,它被用作比较器。例如If TypeOf Typ Is Object Then ...。 C# 的typeof(Typ) 的VB 等价物是GetType(Typ)。或者你可以使用 Type.GetType("NameOfTyp")`。我认为这一切都过于混乱了。
我来这个问题是为了寻找声明嵌套类的类,即 DeclaringType。
this.GetType().DeclaringType.Name
也许不是 OP 所要求的,但也许其他人来到这里的搜索条件与我相同。 ;-)
【讨论】:
enum 的包含类,这也是正确的答案。同样,不是OP要求的,而是我想要的!谢谢
obj.GetType().BaseType.Name
【讨论】:
你可以使用:
string baseclassName = typeof(MyClass).BaseType.Name;
【讨论】:
Type type = obj.GetType();
Type baseType = type.BaseType;
string baseName = baseType.Name;
【讨论】:
上面的问题是询问父类型,可以使用以下方法检索:
yourRefVar.GetType().UnderlyingSystemType.Name
【讨论】:
目前在 .NET Core 中,BaseType 不可用,您可以通过以下方式检索:
typeof(T).GetTypeInfo().BaseType
【讨论】:
我想补充一些细节,如果你需要找到你的类的最终父类,这段代码可以提供帮助。我认为我不知道type 是类还是接口。
do
{
if (type.IsInterface)
if (type.BaseType == null)
break;
if (type.IsClass)
if (type.BaseType == typeof(object))
break;
type = type.BaseType;
} while (true);
string ultimateBaseTypeName = type.Name;
【讨论】: