我意识到构造函数注入(inject)是首选,但我很好奇在使用另一种形式的注入(inject)时如何使用 Ninject 的上下文“命名绑定(bind)”。
具体来说,在使用 DependencyResolver 或属性注入(inject)时,我该怎么做。
public MyService([Named("Alpha")] IRepository repository)
{
this.repository = repository;
}
最佳答案
您可以创建命名绑定(bind)以在 Alpha 上工作:
Bind<IRepository>().To<AlphaRepository>().Named("Alpha");
然后你可以指定其他的,比如:
Bind<IRepository>().To<AnotherRepository>().Named("Beta");
当使用示例构造函数时,您将获得 AlphaRepository。
为了将名称与属性一起使用,就像为参数所做的那样,给属性一个名称属性:
[Inject, Named("Alpha")]
public IRepository Foo {get; set;}
关于c# - 如何将 Ninject 命名绑定(bind)与 DependencyResolver 和 PropertyInjection 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6133431/