我被要求使用表来存储实体类型的状态。通常我之前总是使用枚举。
存在一种业务逻辑,其中实体的状态发生变化。该逻辑封装在实体中。当状态是枚举类型时很容易。但现在我需要注入一项服务来获得所需的状态。我不知道将一个服务(如StatusService)注入该方法是否是一个好主意,使该方法依赖于IStatusService。
示例代码:
public class MyEntity
{
public MyEntityStatus Status { set; get; }
public void MethodInWhichStatusMayChange(IMyEntityStatusService myEntityStatusService)
{
//using myEntityStatusService to get the status when it should change
}
}
public class MyEntityStatus
{
public string Name { set; get; }
}
public interface IMyEntityStatusService
{
MyEntityStatus GetStatusA();
MyEntityStatus GetStatusB();
MyEntityStatus GetStatusC();
}
答案 0 :(得分:1)
最好在类构造函数中注入服务:
public class MyEntity
{
private readonly IMyEntityStatusService myEntityStatusService;
public MyEntity(IMyEntityStatusService myEntityStatusService)
{
this.myEntityStatusService = myEntityStatusService;
}
public MyEntityStatus Status { set; get; }
public void MethodInWhichStatusMayChange()
{
//now you use the private myEntityStatusService field
}
}
如果您决定使用依赖注入引擎,这将使您的生活更轻松,并且您的代码将更干净,更易于使用(您不必通过IMyEntityStatusService
的实例) ,正如评论中指出的那样,更容易测试。