我希望能够在我的 Unity 容器中为同一接口注册 2 个类。然后,我想根据一个参数选择当前的实现。
这是我的界面:
public interface ICheckService
{
HttpResponseMessage Validate(string p1, string p2);
}
}
我的服务:
public class CheckService1 : ICheckService
{
public HttpResponseMessage Validate(string p1, string p2)
{
/////code
}
}
public class CheckService2 : ICheckService
{
public HttpResponseMessage Validate(string p1, string p2)
{
////code
}
}
在 bootstraper.cs 我声明我的服务:
`container.RegisterType<ICheckService, CheckService1>();`
`container.RegisterType<ICheckService, CheckService2>();`
我的 API 控制器:
public class ServiceController : ApiController
{
private readonly ICheckService _checkService;
public ServiceController(ICheckService checkService)
{
_checkService = checkService;
}
[HttpGet]
public HttpResponseMessage Validate(string p1, string p2)
{
return _checkService.Validate(p1, p2);
}
}
现在,当我调用我的 api 时,我想根据 p1 参数选择实现。
如果 p1 等于 Service1,则从 Service1 类调用 Validate 方法,如果 p1 等于 Service2,则从 Service2 类调用 validate 方法。
谢谢你的帮助。