c#中的静态接口

时间:2011-08-04 16:31:43

标签: c# interface

很抱歉,这可能是重复的,但在其他静态界面中,他们提到了我没有使用的泛型。

我想为我的应用程序提供一个快速而简单的记录器我虽然可以避免使用静态元素的单例。 我想保留界面,以便以后我可以更改为另一个日志包。接口对我来说(我可能在这里错了)一种实现“外观”功能的方法。

我觉得我忽略了一些东西。 我们将非常感谢向正确的方向轻轻推动。 (希望它更清楚一点)

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);
    }
}

2 个答案:

答案 0 :(得分:1)

您想要将单身与立面相结合。服务定位器的排序。即创建一个与您的接口具有相同方法的单例,然后将该接口作为单例分配给外观。

I've blogged about it

答案 1 :(得分:1)

C#不支持静态继承或静态接口实现。静态变量 只是一种Singleton的形式,无论你看哪一种方式 - 只需使用Singleton或更好地使用DI容器来注入记录器依赖。