抱歉,它可能是重复的,但是在另一个静态接口中,他们提到了我没有使用的泛型。
我想为我的应用程序提供一个快速而简单的记录器,我想我可以避免使用静态元素的单例。我想保留这个接口,这样以后我就可以切换到另一个日志记录包。这个接口对我来说(这里我可能错了)是一种实现“外观”特性的方式。
我有种感觉,我忽略了一些东西。在正确的方向上轻轻一推,我们将非常感激。(希望它能更清晰一点)
public interface Ilogger
{
void Log(string data, out DateTime datetime, out string uid);
}
public class Logger : Ilogger
{
private static TraceSource AppTrace = new TraceSource("RD", SourceLevels.All);
static Logger ()
{
AppTrace.Listeners.Clear();
AppTrace.Listeners.Add(new DelimitedListTraceListener("RD.log"));
}
static void Log(string data, out DateTime datetime, out string uid)
{
datetime = DateTime.Now;
uid = Guid.NewGuid().ToString();
AppTrace.TraceInformation(datetime + ";" + uid + ";" + data);
}
}发布于 2011-08-05 00:34:38
您希望将单例与外观相结合。一种服务定位器。例如,创建一个与您的接口具有相同方法的单例,然后将该接口作为单例分配给外观。
I've blogged about it。
发布于 2011-08-05 00:36:29
C#不支持静态继承或静态接口实现。无论从哪种角度来看,静态变量都只是Singleton的一种形式--只需使用Singleton,或者更好地使用DI容器来注入记录器依赖。
https://stackoverflow.com/questions/6945127
复制相似问题