在静态方法中获取类的名称

时间:2020-12-02 19:30:32
代码如下:
using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using System.Reflection;

 namespace delete1
 {
     class Program
     {
         static void Main(string[] args)
         {
             string className = MethodBase.GetCurrentMethod().ReflectedType.FullName; //在静态方法中获取类的名称
            Console.WriteLine(className);
         }
     }
 }

我的问题是这个函数GetCurrentMethod()返回的是MethodBase 对象,并不是Program对象啊,里面是什么机制?
 如果GetCurrentMethod()返回的是Program对象 那么后面的.ReflectedType.FullName得出的delete1.Program 就好理解了!谢谢了 高分献上  懂我意思吗? 控制台屏幕上应该显示的是System.Reflection.MethodBase完全限定名才对啊 请高手指教

10 个解决方案

#1


GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。

#2


没有问题,输出的就是 delete1.Program

#3


MethodBase.GetCurrentMethod() ---> 获得System.Reflection.MethodBase对象,此处它表示delete1.Program.Main方法
.ReflectedType ---> 获得System.Type对象,此处它表示delete1.Program这个类型
.FullName; --->获得string对象

#4


引用 1 楼 liquoryellow 的回复:
GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


请问这一句 GetCurrentMethod()运行完应该得到了当前方法的对象,什么叫当前方法的对象

#5


GetCurrentMethod()应该是获取当前方法的相关信息,当前方法中可以获取方法所在的类型。

#6


引用 4 楼 weikeli19 的回复:
Quote: 引用 1 楼 liquoryellow 的回复:

GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


请问这一句 GetCurrentMethod()运行完应该得到了当前方法的对象,什么叫当前方法的对象


这个是静态的就没有,不是静态的应该有。
当前方法所在的名称空间?嘿嘿嘿!

#7


俺懂了..............

#8


引用 6 楼 liquoryellow 的回复:
Quote: 引用 4 楼 weikeli19 的回复:

Quote: 引用 1 楼 liquoryellow 的回复:

GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


请问这一句 GetCurrentMethod()运行完应该得到了当前方法的对象,什么叫当前方法的对象


这个是静态的就没有,不是静态的应该有。
当前方法所在的名称空间?嘿嘿嘿!


6楼的你说的不对 是当前方法信息 比如名称啊

#9


引用 1 楼 liquoryellow 的回复:
GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


用这个语法 你就知道 那个方法发生了什么事  string className = MethodBase.GetCurrentMethod().ToString();

#10


引用 9 楼 weikeli19 的回复:
Quote: 引用 1 楼 liquoryellow 的回复:

GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


用这个语法 你就知道 那个方法发生了什么事  string className = MethodBase.GetCurrentMethod().ToString();

\有道理。哈哈哈。

#1


GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。

#2


没有问题,输出的就是 delete1.Program

#3


MethodBase.GetCurrentMethod() ---> 获得System.Reflection.MethodBase对象,此处它表示delete1.Program.Main方法
.ReflectedType ---> 获得System.Type对象,此处它表示delete1.Program这个类型
.FullName; --->获得string对象

#4


引用 1 楼 liquoryellow 的回复:
GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


请问这一句 GetCurrentMethod()运行完应该得到了当前方法的对象,什么叫当前方法的对象

#5


GetCurrentMethod()应该是获取当前方法的相关信息,当前方法中可以获取方法所在的类型。

#6


引用 4 楼 weikeli19 的回复:
Quote: 引用 1 楼 liquoryellow 的回复:

GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


请问这一句 GetCurrentMethod()运行完应该得到了当前方法的对象,什么叫当前方法的对象


这个是静态的就没有,不是静态的应该有。
当前方法所在的名称空间?嘿嘿嘿!

#7


俺懂了..............

#8


引用 6 楼 liquoryellow 的回复:
Quote: 引用 4 楼 weikeli19 的回复:

Quote: 引用 1 楼 liquoryellow 的回复:

GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


请问这一句 GetCurrentMethod()运行完应该得到了当前方法的对象,什么叫当前方法的对象


这个是静态的就没有,不是静态的应该有。
当前方法所在的名称空间?嘿嘿嘿!


6楼的你说的不对 是当前方法信息 比如名称啊

#9


引用 1 楼 liquoryellow 的回复:
GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


用这个语法 你就知道 那个方法发生了什么事  string className = MethodBase.GetCurrentMethod().ToString();

#10


引用 9 楼 weikeli19 的回复:
Quote: 引用 1 楼 liquoryellow 的回复:

GetCurrentMethod()返回的是MethodBase 对象,没关系啊。GetCurrentMethod()运行完应该得到了当前方法的对象,并且存到MethodBase对象 中了。
ReflectedType这个方法返回的就是GetCurrentMethod()得到MethodBase对象了。这个对象里面就可以通过FullName得到当前对象的类名了。


用这个语法 你就知道 那个方法发生了什么事  string className = MethodBase.GetCurrentMethod().ToString();

\有道理。哈哈哈。