请原谅我的错误,这是我的第一个问题。我希望你能给我一些指导。我试着搜索以前的问题,但我无法准确地说出这个问题。
我试图创建一个简单的Logger与接口类,但我想有接口和Logger类在解决方案中的单独的项目。我正试图把我所有的接口从具体的实现中分离出来。
但是,我创建的Logger类包含一个enum:
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 enum,如果我试图将两个独立的项目连接在一起,我就会遇到循环依赖问题。
有没有人能给我一些关于如何管理枚举,而利用一个接口的见解?可能是我遗漏了一些很简单的东西。如果这个问题太模糊了,我很抱歉。这一切都是由于我试图实现依赖注入,同时将我的接口分离到自己的项目中。
任何反馈都非常感谢!提前感谢!
你的enum LogSeverity
描述了一个契约,所以如果你想把它分成两个程序集,把接口和enum添加到一个程序集,把实现添加到另一个程序集。
界面组装:
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
,那么这个接口的潜在实现者将需要访问它-因此将它与接口的另一个具体实现放在一个项目中并没有真正意义