Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在不实例化对象或不使用静态方法的情况下获取类的名称?_C#_.net_Asp.net_Vb.net - Fatal编程技术网

C# 如何在不实例化对象或不使用静态方法的情况下获取类的名称?

C# 如何在不实例化对象或不使用静态方法的情况下获取类的名称?,c#,.net,asp.net,vb.net,C#,.net,Asp.net,Vb.net,我不喜欢看到类的名称在代码中用作字符串参数,如“FileDownloader”,我想使用类似于FileDownloader.name()的名称,其中FileDownloader是类的名称。 唯一的问题是,如果不实例化对象或创建静态方法,我就无法找到如何做到这一点 有没有一种方法可以在.net中获取类名,而无需对象实例,也无需创建返回类名的静态方法?确定: var name = typeof(FileDownloader).Name; 使用运算符的类型: typeof ( FileDownloa

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

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

确定:

var name = typeof(FileDownloader).Name;

使用运算符的类型:

typeof ( FileDownloader).Name
试试typeof(YourClass.name)。这将在VB.Net中公开类的名称

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

好了。完全动态的。只要小心重构。。。如果将其移动到另一个类,则类名将更改…:)

如果您需要thistypeof(),我认为应用程序中有问题。名称是对重构友好的,如果重命名该类,它将更改。文字字符串不会(除非您有用于此的加载项)。