我使用Ninject與下列包綁定:條件在WebApi2控制器方法
- Ninject
- Ninject.MVC5
- Ninject.Web.Common(和Common.WebHost)
- Ninject。 Web.WebApi(和WebApi.WebHost)
我有一個WebApi2控制器,如下所示。我的Get()
方法必須是高性能的,並且它不依賴於IMyFooService
的值,因此當請求Get()
時,我不在乎它是否被注入。
問:
有我選擇性結合接口只有被稱爲某些API方法的方法嗎?無論是通過使用屬性還是...?
public class FooController : ApiController {
public IMyFooService fooService;
public FooController(IMyFooService fooService) {
this.fooService = fooService;
}
[NonDependent] // Don't really care about the value of fooService
public JsonResult Get() {}
[Dependent] // Must have valid dependency injection
public async Task<JsonResult> Post([FromBody] IList foos) {
var didMyFoo = this.fooService.DoTheFoo();
}
}
這裏是我的NinjectWebCommon.cs
:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IMyFooService>().To<MyConcreteService>().InRequestScope();
}
我注意到,To<T>()
有許多選項。也許我可以利用這個來說.When(/* Controller = Foo, Action = Post */)
。
看看這篇文章。 https://rehansaeed.com/asp-net-core-lazy-command-pattern/有人已經建議了類似的東西,但我相信這是你正在尋找的設計。 – Nkosi