F# 统一、棱镜、竖琴

F# 统一、棱镜、竖琴,f#,prism,unity-container,F#,Prism,Unity Container,当我尝试注入到FSharp库中时,我得到了一个解析错误,但在使用CSharp库时没有 我有3个项目: csharp的一个主要应用 一个CSharp项目,包含一个类,该类的构造函数需要一个实例化良好的IUnityContainer 一个FSharp项目,包含一个类,该类的构造函数需要一个IUnityContainer,而该IUnityContainer不能以错误的方式实例化 依赖项解析失败,类型为= “ModuleDBGraphFS.ModuleEntityGraphFS”,name=“(无)

当我尝试注入到FSharp库中时,我得到了一个解析错误,但在使用CSharp库时没有

我有3个项目:

  • csharp的一个主要应用
  • 一个CSharp项目,包含一个类,该类的构造函数需要一个实例化良好的IUnityContainer
  • 一个FSharp项目,包含一个类,该类的构造函数需要一个IUnityContainer,而该IUnityContainer不能以错误的方式实例化
依赖项解析失败,类型为= “ModuleDBGraphFS.ModuleEntityGraphFS”,name=“(无)”。例外情况 发生时:解析时。例外情况是: InvalidOperationException-当前类型, Microsoft.Practices.Unity.IUnityContainer是一个接口,无法 建造。是否缺少类型映射?

发生异常时,容器为:

解析ModuleDBGraphFS.ModuleEntityGraphFS,(无)解析 构造函数的参数“container” ModuleDBGraphFS.ModuleEntityGraphFS(Microsoft.Practices.Unity.IUnityContainer 容器,Microsoft.Practices.Prism.Regions.IRegionManager) 解析Microsoft.Practices.Unity.IUnityContainer(无)

第一个项目中的应用程序类(WPF项目,添加prism,从app.xaml中删除startupuri,为引导程序添加代码)

命名空间WpfApplication
{
类引导程序:UnityBootstrapper
{
受保护的覆盖依赖对象CreateShell()
{
返回此.Container.Resolve();
}
受保护的覆盖无效初始值设置Shell()
{
base.InitializeShell();
App.Current.MainWindow=(窗口)this.Shell;
App.Current.MainWindow.Show();
}
受保护的覆盖无效配置ModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog ModuleCatalog=(ModuleCatalog)this.ModuleCatalog;
//OK moduleCalog.AddModule(typeof(ModuleDBGraph.ModuleEntityGraph));
//KO moduleCatalog.AddModule(typeof(ModuleDBGraphFS.ModuleEntityGraphFS));
}
}
}
在C#项目中

公共类模块标题图:IModule
{
专用IUnityContainer\u容器;
专用只读IRegionManager\u manager;
公共模块标题图(IUnityContainer容器、IRegionManager)
{
_容器=容器;
_经理=经理;
}
void IModule.Initialize()
{
}
}
在F#项目中

键入ModuleEntityGraphFS(容器:IUnityContainer,管理器:IRegionManager)=
请打印“嗨”
将Microsoft.Practices.Prism.Modularity.IModule与
成员x.Initialize()=
do()

出于某种原因,prism的Nuget脚本在我的模块项目中添加了对

C:\windows\assembly\GAC_MSIL\Microsoft.Practices.Unity\1.2.0.0__31bf3856ad364e35\Microsoft.Practices.Unity.dll
而shell项目本身正在引用

WpfApplication3\packages\Unity.2.1.505.2\lib\NET35\Microsoft.Practices.Unity.dll
我开始的一个新的解决方案让我看到了这个问题。
因此出现了一个奇怪的消息,即它无法解析UnityContainer本身(应该由Prism Unity extensions在某处注册)

您的引用是否相同?该错误消息指出您没有
IUnityContainer
映射设置。我有相同的引用。。。奇怪的是,调用其中一个时映射会在那里,而调用另一个时映射不会在那里。我将在家用电脑上试用。我无法在Mac上复制。我一定是漏掉了什么,稍后会报告到底是什么。。。