Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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_Reflection - Fatal编程技术网

C# 如果我';我用祖先的方法?

C# 如果我';我用祖先的方法?,c#,.net,reflection,C#,.net,Reflection,我们记录我们的进程以进行调试,并使用反射来获取用于记录的方法名。目前,我使用System.Reflection.MethodInfo参数调用logging方法,在logging方法内部,它解析该参数以使用method.DeclaringType.Name获取该方法所在的类的名称(以及method.Name,目前还不是问题)。我从中得到的是祖先名称,我想要的是后代(即使所使用的方法没有被覆盖,而是直接从祖先运行)。这可能吗?我搜索了反射信息,但在任何地方都没有找到后代的名字 我不关心反射的性能问题

我们记录我们的进程以进行调试,并使用反射来获取用于记录的方法名。目前,我使用System.Reflection.MethodInfo参数调用logging方法,在logging方法内部,它解析该参数以使用method.DeclaringType.Name获取该方法所在的类的名称(以及method.Name,目前还不是问题)。我从中得到的是祖先名称,我想要的是后代(即使所使用的方法没有被覆盖,而是直接从祖先运行)。这可能吗?我搜索了反射信息,但在任何地方都没有找到后代的名字

我不关心反射的性能问题,如果需要获取所需信息,我愿意向记录器方法添加额外的参数


谢谢

不,您无法从
MethodInfo
中获得该信息。您应该传入
this
,此时日志代码可以调用
GetType()
,以查找对象的实际类型。

执行
Method.ReflectedType.Name
执行预期操作?@cdhowie-在本例中,它们是相同的。不过谢谢。我假设OP是从一个
新StackTrace()
对象获取此信息的。。。在这种情况下,与每个堆栈帧关联的对象的实际类型(如果有的话)可能根本不可用。@cdhowie:是的,当然是这样。没有更多的信息很难说。不,我没有使用新的StackTrace对象,这个解决方案很有效。我希望不必对记录器进行覆盖,但这很好。谢谢