我刚刚使用 Ninject 3 更新了我的应用程序。将 App_Start 中的文件从 NinjectMVC3 更改为 NinijectWebCommon.cs。移动了我的文件,更新了 DLL。现在我开始收到此错误:
“使用 Dictionary{string, string} Provider 的条件隐式自绑定激活 Dictionary{string, string} 时出错,返回 null。激活路径: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";
}
Run Code Online (Sandbox Code Playgroud)
MapWidgetViewModel类定义如下:
public class MapWidgetViewModel : IDetailedSearchResultCollectionWidget, IMapWidgetSettings
{
//constructor:
public MapWidgetViewModel(IEnumerable<IDetailedSearchResult> dataSet,
Dictionary<String,String> widgetSettings = null)
{
InitParentInterfaceProperties();
}
}
Run Code Online (Sandbox Code Playgroud)
最后绑定:
kernel.Bind<IDetailedSearchResultCollectionWidget>().To<MapWidgetViewModel>();
Run Code Online (Sandbox Code Playgroud)
没有
kernel.Bind<MapWidgetViewModel>().ToSelf();
Run Code Online (Sandbox Code Playgroud)
感谢您提供有关如何解决此问题的任何想法。
多谢!
亚历克斯
好的..找到了有帮助的答案..这里是: Using defaultparametervalueswithNinject3.0
只需要覆盖设置:kernel.Settings.AllowNullInjection = true;
谢谢,艾尔
| 归档时间: |
|
| 查看次数: |
1940 次 |
| 最近记录: |