替换system.reflection为“this”

时间:2016-03-04 15:21:06

标签: c# this system.reflection

我有一种方法,我试图更容易广泛部署。

NHibernateISession.log4netLogFileEntry("DEBUG", "hello",
    System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName);

我想将System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName简化为简单this

但如何从FullName获取this.FullName

如果它可以帮助您: System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName为您提供了

<namespace>.<namespace>.<namespace>.<class>

2 个答案:

答案 0 :(得分:3)

this是一个对象 - System.Reflection.MethodBase.GetCurrentMethod().DeclaringType是一种类型。如果您想获得this类型的全名,请使用

this.GetType().FullName

但请注意,它们不相同。较长的一个返回声明方法的类型。如果实际对象是子类,那么您将获得子类型名称。它也不适用于static方法,而System.Reflection.MethodBase.GetCurrentMethod().DeclaringType则会。

如果您确实需要声明该方法的类型,那么

System.Reflection.MethodBase.GetCurrentMethod().DeclaringType

是正确的方法。没有可以在其位置使用的关键字或快捷方式。

答案 1 :(得分:0)

System.Exception.StackTrace是我尝试的一个很好的替代品。 事实上,它甚至更好。 而我所要做的就是:     尝试{...} catch(例外e){myfunction(e); } 和:     MyFunction(例外e){log(e.StackTrace)}