2011-09-08 86 views
0

是否可以引用一段代码所在类的名称?一个静态字段可以获取它声明的类的名字吗?

例如与log4net的添加日志报表时,我们初始化日志这样每个班...

private static readonly ILog Log = LogManager.GetLogger(typeof(EmploymentCorrectionUpdate)); 

其中“EmploymentCorrectionUpdate”是包含代码的类的名称。

如果可以一般地检索类名,那将会容易得多。

请注意:这是一个静态字段。

+0

不确定,但'this.GetType()'而不是'EmploymentCorrectionUpdate'? – psycho

+0

它是静态的,它是一个初始值设定项。这就是为什么这不起作用的两个原因@psycho – CodesInChaos

+0

尴尬,对我而言。我打字前没有想过。 – psycho

回答

2

耶足够有趣,我们用它来记录过,但我不喜欢使用这些目的反思:

MethodInfo.GetCurrentMethod().DeclaringType.Name; 
+0

谢谢TSar将这项工作用于不在方法中的静态字段? –

+1

对于优化的内联代码,这不起作用。 –

+0

适合我需要的东西,谢谢。 –

1

对于很容易一个实例方法(this.GetType()),但你需要一个静态的,类级别的方法。

我认为这很困难(或缓慢)。如果有一种简单/快捷的方式,log4net开发者会使用它。

0

您可以使用下面的代码用于获取类名。

MethodBase method = frame.GetMethod(); method.DeclaringType.Name

相关问题