为什么在.NET中使用记录器时硬编码类名?

now*_*ed. 3 .net c# logging log4net asp.net-web-api

我见过很多人写这行代码.

       var logger = log4net.LogManager.GetLogger(typeof(ServiceRequestController));
Run Code Online (Sandbox Code Playgroud)

但是,为什么要这样we hard-code the controller name.

简单写一下会更好

       var logger = log4net.LogManager.GetLogger(this.GetType());
Run Code Online (Sandbox Code Playgroud)

绝大多数人都是以第一种方式写作(他们对类名进行硬编码).但我想知道为什么?

只需一个人可以使用后一个版本吗?

或者我在这里看到的东西?

小智 6

Typeof在编译时为您提供类型,而this.GetType在执行时.此外,"硬编码"变体通常更具可读性(您不需要让精神之旅考虑'好的,那么this在这种情况下意味着什么呢?'