【发布时间】:2017-08-04 21:38:27
【问题描述】:
将我的一个接口绑定到一个类时,我收到了 NinjectActivationException
激活 IInitialUploadFolderCleaner 时出错多个匹配项 绑定可用。匹配绑定:1)绑定来自 IInitialUploadFolderCleaner 到 InitialUploadFolderCleaner 2) 绑定 从 IInitialUploadFolderCleaner 到 InitialUploadFolderCleaner 激活路径:1)请求IInitialUploadFolderCleaner 建议: 1)确保您已经定义了一个绑定 InitialUploadFolderCleaner 只有一次。
所以,我使用带有BindDefaultInterface() 方法的约定绑定,但是对于这个类,我想添加一个构造函数参数 - 一个字符串。
为了实现这一点,我想指定显式绑定,希望 ninject 仅在未找到显式绑定时才使用默认绑定。
kernel.Bind<IInitialUploadFolderCleaner>().To<InitialUploadFolderCleaner>().WithConstructorArgument("siteRootPath", HostingEnvironment.ApplicationPhysicalPath);
kernel.Bind(x =>
{
x.FromAssembliesMatching("MyPrefix.*")
.SelectAllClasses()
.BindDefaultInterface();
});
但是,事实证明,它并不能以这种方式工作,或者它需要一些额外的设置。
我没有在其他任何地方显式绑定此接口,并且当我重命名实现以使其不遵循命名约定时,它可以正常工作并且我得到所有构造函数参数。
【问题讨论】:
标签: c# asp.net dependency-injection binding ninject