【问题标题】:How to get the name of the class without instantiating object or having a static method?如何在不实例化对象或具有静态方法的情况下获取类的名称?
【发布时间】:2011-02-22 11:49:29
【问题描述】:

我讨厌在代码中看到用作字符串参数的类的名称,例如“FileDownloader”,我想使用类似 FileDownloader.Name() 的东西,其中 FileDownloader 是类的名称。
唯一的问题是,如果不实例化对象或创建静态方法,我无法找到如何做到这一点...

有没有办法在 .net 中获取类名,而无需对象实例,也无需创建返回类名的静态方法?

【问题讨论】:

  • 如果您需要,我认为应用程序有问题

标签: c# .net asp.net vb.net


【解决方案1】:

当然:

var name = typeof(FileDownloader).Name;

【讨论】:

  • typeof().Name 是重构友好的,如果类被重命名它会改变。文字字符串不会(除非你有插件)。
【解决方案2】:

使用 typeof 运算符:

typeof ( FileDownloader).Name

【讨论】:

    【解决方案3】:

    试试 typeof(YourClass).name。这应该公开你的班级的名字

    【讨论】:

      【解决方案4】:

      在 VB.Net 中:

      Dim sf As StackFrame = New StackFrame()
      Dim mb As MethodBase = sf.GetMethod()
      Dim className = mb.DeclaringType.Name
      

      给你。完全动态。请注意重构...如果将其移至另一个类,则类名将更改... :)

      【讨论】:

        猜你喜欢
        • 2012-12-31
        • 2020-10-14
        • 2012-05-23
        • 2019-06-11
        • 2016-11-18
        • 2023-04-02
        • 1970-01-01
        • 2011-01-21
        • 1970-01-01
        相关资源
        最近更新 更多