【问题标题】:Getting parent class' name using Reflection使用反射获取父类的名称
【发布时间】:2009-10-06 09:35:08
【问题描述】:

如何使用反射获取某个类的父类名称?

【问题讨论】:

    标签: .net reflection


    【解决方案1】:

    像这样:

    typeof(Typ).BaseType.Name
    

    【讨论】:

    • 在 vb TypeOf(Typ).GetType().BaseType.Name
    • @Alexandre 我不认为这是正确的; TypeOf 不返回值,它被用作比较器。例如If TypeOf Typ Is Object Then ...。 C# 的typeof(Typ) 的VB 等价物是GetType(Typ)。或者你可以使用 Type.GetType("NameOfTyp")`。我认为这一切都过于混乱了。
    【解决方案2】:

    我来这个问题是为了寻找声明嵌套类的类,即 DeclaringType。

    this.GetType().DeclaringType.Name
    

    也许不是 OP 所要求的,但也许其他人来到这里的搜索条件与我相同。 ;-)

    【讨论】:

    • 如果您想要 enum 的包含类,这也是正确的答案。同样,不是OP要求的,而是我想要的!谢谢
    【解决方案3】:
    obj.GetType().BaseType.Name
    

    【讨论】:

      【解决方案4】:

      你可以使用:

      string baseclassName = typeof(MyClass).BaseType.Name;
      

      【讨论】:

        【解决方案5】:
                Type type = obj.GetType();
                Type baseType = type.BaseType;
                string baseName = baseType.Name;
        

        【讨论】:

          【解决方案6】:

          上面的问题是询问父类型,可以使用以下方法检索:

          yourRefVar.GetType().UnderlyingSystemType.Name

          【讨论】:

            【解决方案7】:

            目前在 .NET Core 中,BaseType 不可用,您可以通过以下方式检索:

            typeof(T).GetTypeInfo().BaseType
            

            【讨论】:

              【解决方案8】:

              我想补充一些细节,如果你需要找到你的类的最终父类,这段代码可以提供帮助。我认为我不知道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;
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2012-05-31
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2022-01-08
                • 1970-01-01
                相关资源
                最近更新 更多