我刚刚使用 Ninject 3 更新了我的应用程序。将 App_Start 中的文件从 NinjectMVC3 更改为 NinijectWebCommon.cs。移动了我的文件,更新了 DLLs..
现在我开始收到此错误:
“使用 Dictionary{string, string} 的条件隐式自绑定(bind)激活 Dictionary{string, string} 时出错
提供者返回 null。
激活路径:
4) 将依赖 Dictionary{string, string} 注入(inject) MapWidgetViewModel 类型的构造函数的参数 widgetSettings
3) 将依赖IDetailedSearchResultCollectionWidget注入(inject)MediaSourcesViewModel类型构造函数的参数mediaWidgets
2) 将依赖 ITabItem 注入(inject)到 TabNavigationController 类型的构造函数的参数 tabItems 中
1) 请求 TabNavigationController
建议:
1) 确保提供者正确处理创建请求。”
在这里生成它的代码:
public MediaSourcesViewModel(IEnumerable<IMediaSourcesDataProvider> dataProviders,
IEnumerable<IDetailedSearchResultCollectionWidget> mediaWidgets,
IMediaItemDetailsWidget itemDetailsWidget)
{
this.Description = "Source list";
this.ActionName = "DisplaySourcesAsPartial";
this.ControllerName = "MediaSources";
this.DefaultType = "MediaManagement";
_dataProviders = dataProviders;
MediaWidgets = new List<IDetailedSearchResultCollectionWidget>();
MediaWidgets.AddRange(mediaWidgets); //Set Tab Info
this.Name = "Sources";
}
MapWidgetViewModel 类定义如下:
public class MapWidgetViewModel : IDetailedSearchResultCollectionWidget, IMapWidgetSettings
{
//constructor:
public MapWidgetViewModel(IEnumerable<IDetailedSearchResult> dataSet,
Dictionary<String,String> widgetSettings = null)
{
InitParentInterfaceProperties();
}
}
最后绑定(bind):
kernel.Bind<IDetailedSearchResultCollectionWidget>().To<MapWidgetViewModel>();
没有
kernel.Bind<MapWidgetViewModel>().ToSelf();
感谢您提供如何解决此问题的任何想法。
多谢!
亚历克斯
最佳答案
好的..找到有帮助的答案..这里是:
Using default parameter values with Ninject 3.0
只需要覆盖设置:
kernel.Settings.AllowNullInjection = true;
谢谢,
铝
关于ninject - 从 Ninject 2 移动到 Ninject 3。绑定(bind)错误。确保提供者正确处理创建请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11421700/