c# - 如何将 Ninject 命名绑定(bind)与 DependencyResolver 和 PropertyInjection 一起使用

标签 c# ninject

我意识到构造函数注入(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/

相关文章:

c# - 将多个 EF 上下文注册到一个 DI 容器中

c# - Ninject 工厂扩展和 InCallScope 没有给出预期的结果

c# - ASP.NET 回发会在 URL 重写中产生问题?

c# - 从具有特定用户名的系统帐户启动进程

c# - 多个服务器在 HANGFIRE 中生成错误 500

Ninject - 获取接口(interface)的绑定(bind)

c# - 将 Ninject 模块转换为 Autofac

c# - 如何使用 C# 连接到 Azure 存储表

c# - 使用 SocketAsyncEventArgs 编写可扩展的套接字服务器

c# - 如何将对象注入(inject) Ninject 模块