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 と等しい場合、Validate メソッドは Service1 クラスから呼び出され、p1 が Service2 と等しい場合、検証メソッドは Service2 クラスから呼び出されます。
ご協力いただきありがとうございます。