繁体   English   中英

使用枚举C#创建具体类的接口?

[英]Creating interface for concrete class with enum C#?

请原谅任何错误,这是我的第一个问题。 我真的很感谢这里的一些指导。 我尝试搜索以前的问题,但是我无法完全正确地表达该问​​题。

我正在尝试使用接口类创建一个简单的Logger,但是我想在解决方案中的单独项目中使用该接口和Logger类。 我试图将所有接口与具体实现分开。

但是,我创建的Logger类包含一个枚举:

public class Logger : ILogger 
{
    public enum LogSeverity
    {
        None = 0,
        Verbose = 1, 
        Information = 2,
        Warning = 3,
        Error = 4,
        Critical = 5
    }

    public void Log(string message)
    { ... }

    public void Log(string message, LogSeverity severity)
    { ... }
}

然后,我有一个接口(在单独的项目中)用于ILogger:

public interface ILogger
{
    void Log(string message);

    void Log(string message, LogSeverity severity);
}

由于接口不了解LogSeverity枚举,因此我遇到了问题,如果尝试将两个单独的项目连接在一起,则会遇到循环依赖问题。

谁能给我一些有关在使用接口时如何管理枚举的见解? 这可能是我很想念的很简单的事情。 抱歉,这个问题太模糊了。 这一切都是在我尝试实现依赖注入时实现的,同时将接口分为自己的项目。

任何反馈,不胜感激! 提前致谢!

您的枚举LogSeverity描述了一个契约,因此,如果您希望将其分成两个程序集,则将接口和枚举添加到一个程序集,并将实现添加到另一个程序集。

接口组装:

public enum LogSeverity
{
    // enum items
}

public interface ILogger
{
    void Log(string message);

    void Log(string message, LogSeverity severity);
}

实施程序集:

public class Logger : ILogger 
{

    public void Log(string message)
    { ... }

    public void Log(string message, LogSeverity severity)
    { ... }
}

您应该可以使用该界面将Enum放入项目中。

将您的界面分为一个单独的项目的想法是,可以将其在不同的项目中重复使用,以创建可以根据需要注入的不同的ILogger实现。 如果ILogger引用LogSeverity则该接口的潜在实现者将需要对其进行访问-因此将其放入具有该接口的另一个具体实现的项目中并不是很有意义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM