8 c# architecture enums interface
我在Visual Studio解决方案中为应用程序提供了以下项目:
我将接口放入单独项目的原因是避免循环项目引用.这允许两个项目引用一个公共接口,避免同时引用项目和具体实现.
我故意在Interfaces项目中没有项目引用来避免循环项目引用.我为其他项目中定义的类创建了一个接口,这允许我引用对象接口,而不是其他接口中的具体实现.
所以一个例子是:
namespace Acme.Entities
{
public class Person : IPerson
{
string Name { get; set; }
}
}
namespace Acme.Interfaces
{
public interface IPerson
{
string Name { get; set; }
}
}
namespace Acme.Interfaces
{
public interface ITeam
{
string Name { get; set; }
IPerson Leader { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是接口引用另一个项目中定义的枚举.如果不在Interfaces项目下移动Enums,我不知道如何在不创建项目引用的情况下引用Enums,例如:
namespace Acme.Entities
{
public enum Status
{
Unknown =0,
Active = 1,
Active = 2
}
}
namespace Acme.Interfaces
{
public interface IPerson
{
string Name { get; set; }
Acme.Entities.Status ActiveStatus { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
除非我引用Acme.Entities项目,否则Acme.Entities.Status将失败,但这将创建一个循环引用,因为Acme.Entities引用了Interfaces项目.