假设我有一个实用程序(例如记录器),我的应用程序中的每个类都可能使用它。我希望记录器能够保存有关使用记录器的客户端类型的信息,即如果StockProvider
想要记录消息,记录器应该将StockProvider
类名与日志消息一起附加。并且StockProvider
记录器通过构造函数传递,例如
public StockProvider (ILogger logger) {}
因此它可以在其方法中使用记录器。我知道每次使用记录器时传递类型信息是最简单的,比如logger.Log (GetType(), msg)
. 我想要的是记录器在其状态中拥有该客户端类型信息,而不是必须将该类型信息传递给记录器方法,以便调用Log
导致消息被附加类型名称。例如,使用构造函数传递它
class Logger : ILogger {
public Logger (Type clientType) {
this.type = clientType;
}
public void Log(string msg)
{ Console.WriteLine(this.type.FullName + msg); }
}
会在里面工作,StockProvider
我只能说
logger.Log (msg)
所以问题是:我是否能够以Logger
这样一种通用的方式进行注册,以接收clientType
请求记录器的客户端(无论是它StockProvider
还是任何其他客户端类型)?请注意,我将记录器用作代码中可能广泛使用的某些类的示例。它也可能是一种事件发布者,想知道谁触发了事件