我有一种方法,我试图更容易广泛部署。
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>
答案 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)}