首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#中的静态接口

c#中的静态接口
EN

Stack Overflow用户
提问于 2011-08-05 00:31:43
回答 2查看 366关注 0票数 0

抱歉,它可能是重复的,但是在另一个静态接口中,他们提到了我没有使用的泛型。

我想为我的应用程序提供一个快速而简单的记录器,我想我可以避免使用静态元素的单例。我想保留这个接口,这样以后我就可以切换到另一个日志记录包。这个接口对我来说(这里我可能错了)是一种实现“外观”特性的方式。

我有种感觉,我忽略了一些东西。在正确的方向上轻轻一推,我们将非常感激。(希望它能更清晰一点)

代码语言:javascript
复制
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);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-05 00:34:38

您希望将单例与外观相结合。一种服务定位器。例如,创建一个与您的接口具有相同方法的单例,然后将该接口作为单例分配给外观。

I've blogged about it

票数 1
EN

Stack Overflow用户

发布于 2011-08-05 00:36:29

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6945127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档