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