简单 ASP.NET Web API 中的依赖项注入

本文关键字:依赖 注入 API ASP NET Web 简单 | 更新日期: 2023-09-27 17:56:54

我正在创建我的第一个Web API,目前有以下代码:

public interface IRepository<T> where T : class
{
    T GetById(Int32 id, VehicleTypeEnum type);
}
public class VehicleRepository : IRepository<Vehicle>
{
    public VehicleRepository(DbContext dataContext) {}
    public Vehicle GetById(Int32 id, VehicleTypeEnum type)
    {
        try
        {
            switch (type)
            {
                case VehicleTypeEnum.Car:
                    // connect to WcfService1 to retrieve data
                case VehicleTypeEnum.Truck:
                    // connect to WcfService2 to retrieve data
                case VehicleTypeEnum.Motorcycle:
                    // connect to Database to retrieve data
            }
        }
        catch (Exception ex)
        {
            // log exception
        }
    }
}
public class VehicleController : ApiController
{
    private readonly IVehicleRepository _repository;
    public VehicleController(IVehicleRepository repository)
    {
        _repository = repository;
    }
    // GET api/vehicle/5
    public Vehicle GetVehicle(int id, VehicleTypeEnum type)
    {
        return _repository.GetById(id, type);
    }
}

正如您在 VehicleRepository 的 GetById 方法中看到的那样,我需要根据传入的 Enum 值调用不同的服务。我想避免在每种方法中都有这种开关大小写。

有人告诉我我可以使用 IoC/依赖注入...已经尝试搜索简单的例子,但无法理解这个概念。

任何人都可以启发我如何简单地实现这一点吗?

简单 ASP.NET Web API 中的依赖项注入

这看起来像是运行时选择或映射几个候选策略之一问题的简单示例。

至少有三种方法可以以与容器无关的方式执行此操作:

  • 使用元数据角色提示
  • 使用角色接口角色提示
  • 使用部分类型名称角色提示

我个人的偏好是部分类型名称角色提示。