我最近写了一个记录器类,它在我的IoC
中初始化。
public static class IoC() {
public static ILogger Logger => IoC.Get<ILogger>();
[...]
}
ILogger
具有泛型类型方法:
void Log<T>(string message, LogLevel level = LogLevel.Info);
这样我就可以更好地维护我的日志了。
我可以这样称呼它:
IoC.Logger.Log<GeneralLog>("My message");
现在,这很长。
是否有可能在C#中,以便我可以使用预定义的泛型类型声明Log<T>()
方法的快捷方式?
例如:
而不是
IoC.Logger.Log<GeneralLog>("My message");
我可以写
IoC.Logger.General("Message"); // and this should reference to IoC.Logger.Log<GeneralLog>
答案 0 :(得分:1)
IoC.Logger
属于ILogger
类型,可能不在您的控制范围内,因此您无法对其进行编辑以添加该方法。
您可以将其编写为扩展方法:
public static class ILoggerExtensions
{
public static void General(this ILogger logger, string message)
{
logger.Log<GeneralLog>(message);
}
}
现在,您可以在每个.General(string)
上致电ILogger
,例如IoC.Logger
返回的Graphics.DrawImage
。