简单 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/依赖注入...已经尝试搜索简单的例子,但无法理解这个概念。
任何人都可以启发我如何简单地实现这一点吗?
这看起来像是运行时选择或映射几个候选策略之一问题的简单示例。
至少有三种方法可以以与容器无关的方式执行此操作:
- 使用元数据角色提示
- 使用角色接口角色提示
- 使用部分类型名称角色提示
我个人的偏好是部分类型名称角色提示。