在业务逻辑中使用查找表的好方法是什么

本文关键字:方法 是什么 查找 业务 | 更新日期: 2023-09-27 18:21:39

我被要求使用一个表来存储实体类型的状态。通常我以前总是使用枚举。

存在一种业务逻辑,其中实体的状态发生变化。这个逻辑被封装在实体中。当状态是枚举类型时,这很容易。但现在我需要注入一个服务来获得所需的状态。我不知道在该方法中注入一个服务(如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();
}

在业务逻辑中使用查找表的好方法是什么

最好在类构造函数中注入服务:

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的实例),并且正如评论中所指出的,更易于测试。