我刚刚使用 Ninject 3 更新了我的应用程序。将 App_Start 中的文件从 NinjectMVC3 更改为 NinijectWebCommon.cs。移动了我的文件,更新了 DLL。现在我开始收到这个错误:
“使用 Dictionary{string, string} Provider 的条件隐式自绑定激活 Dictionary{string, string} 时出错。激活路径:4) 将依赖 Dictionary{string, string} 注入 MapWidgetViewModel 类型构造函数的参数 widgetSettings 3)将依赖项 IDetailedSearchResultCollectionWidget 注入到 MediaSourcesViewModel 类型的构造函数的参数 mediaWidgets 2) 将依赖项 ITabItem 注入到 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();
}
}
最后绑定:
kernel.Bind<IDetailedSearchResultCollectionWidget>().To<MapWidgetViewModel>();
没有
kernel.Bind<MapWidgetViewModel>().ToSelf();
感谢您提供如何解决此问题的任何想法。
多谢!
亚历克斯