我使用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