C# 通过名称绑定ninject

C# 通过名称绑定ninject,c#,ninject,C#,Ninject,我有一个ninject问题,我在多个类型上使用相同的接口为我的应用程序提供配置类 启动该应用程序的入口点类(如下)是从ninject内核返回的,我对该类有一个名为Config的依赖关系 public ProcessA(ILogger logger, [Named("TypeA")] IConfigProvider configProvider) { _logger = logger; _configProvider = configProvider

我有一个ninject问题,我在多个类型上使用相同的接口为我的应用程序提供配置类

启动该应用程序的入口点类(如下)是从ninject内核返回的,我对该类有一个名为
Config
的依赖关系

    public ProcessA(ILogger logger, [Named("TypeA")] IConfigProvider configProvider)
    {
        _logger = logger;
        _configProvider = configProvider;
    }

    public ProcessB(ILogger logger, [Named("TypeB")] IConfigProvider configProvider)
    {
        _logger = logger;
        _configProvider = configProvider;
    }
然后在我的绑定中

        Bind<IConfigProvider>().To<ProcessA>().Named("TypeA");
        Bind<IConfigProvider>().To<ProcessB>().Named("TypeB");
您可以使用该机制来实现这一点。 有关所有可用方法,请参阅。 当任何一个名字被命名时,
如何

或者,还有
whenInjectedTo
绑定,其使用方式如下:

Bind<IConfigProvider>().To<ConfigA>()
    .WhenInjectedInto<ProcessA>();
Bind().To())
.当输入到()时;

现在,由于您实际上不想将其直接注入
进程a
,因此您必须在
时使用
条件,如
何时注入到ancestor()
。您可以自己创建它-作为扩展方法,从
WhenAnyAncestorMatches
扩展方法扩展而来。另请参见

谢谢您的回答,我认为这让我走上了正确的道路。你能检查一下我的编辑吗?我觉得不错。但是为什么你不在AnyAnceStorMatches
方法时使用/扩展
方法?无法解析该方法?!奇怪。它应该在那里,比如,它在ninject的测试中使用。我知道,很奇怪。谢谢你的帮助。
Bind<IConfigProvider>().To<ConfigA>()
    .WhenInjectedInto<ProcessA>();