gpt4 book ai didi

c# - 简单 ASP.NET Web API 中的依赖注入(inject)

转载 作者:行者123 更新时间:2023-11-30 17:48:33 27 4
gpt4 key购买 nike

我正在创建我的第一个 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 值调用不同的服务。我想避免在每个方法中都使用这种 switch case。

我被告知我可以使用 IoC/依赖注入(inject)...已经尝试搜索简单的示例但无法理解这个概念。

谁能告诉我如何简单地实现它?

最佳答案

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

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

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

关于c# - 简单 ASP.NET Web API 中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22865621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com