我有一个像这样工作的记录器:
Dim logger = new Logger(Me)
这具有提取出以字符串格式提供的实体的一些信息的效果。不幸的是,我们的代码中有几个,Modules
所以这自然是行不通的。
有没有办法获得Type
模块或基本上使其适合,而无需将有关模块的信息作为字符串集合传递。
System.Reflection.MethodBase.GetCurrentMethod().DeclaringType
将返回Type
当前模块的对象,但这与您在类中时的实际实例对象非常不同,因此您必须在Logger
构造函数中以不同方式处理它。因此,例如,您可以使用重载来检测差异,如下所示:
Public Class Logger
Public Sub New(consumer As Type)
Initialize(consumer)
End Sub
Public Sub New(consumer As Object)
Initialize(GetType(consumer))
End Sub
Private Sub Iniatialize(consumer As Type)
' Extract info from type
End Sub
End Class