当我尝试注入 FSharp 库时出现解析错误,但在使用 CSharp 库时却没有。
我有 3 个项目:
- csharp中的一个主要应用程序
- 一个 CSharp 项目,其中包含一个类,其构造函数需要一个 IUnityContainer,该 IUnityContainer 可以很好地实例化
- 一个 FSharp 项目,其中包含一个类,其构造函数需要一个无法实例化并出现错误的 IUnityContainer
依赖项解析失败,type = "ModuleDBGraphFS.ModuleEntityGraphFS",name = "(none)"。异常发生时:解决时。异常是: InvalidOperationException -当前类型 Microsoft.Practices.Unity.IUnityContainer 是一个接口,无法构造。您是否缺少类型映射?
在异常发生时,容器是:
Resolving ModuleDBGraphFS.ModuleEntityGraphFS,(none) Resolving parameter "container" of constructor ModuleDBGraphFS.ModuleEntityGraphFS(Microsoft.Practices.Unity.IUnityContainer container, Microsoft.Practices.Prism.Regions.IRegionManager manager) Resolving Microsoft.Practices.Unity.IUnityContainer,(none )
第一个项目中的应用程序类(WPF 项目,添加 prism,从 app.xaml 中删除 startupuri,添加 bootstrapper 后面的代码)
namespace WpfApplication
{
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return this.Container.Resolve<Shell>();
}
protected override void InitializeShell()
{
base.InitializeShell();
App.Current.MainWindow = (Window)this.Shell;
App.Current.MainWindow.Show();
}
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
// OK moduleCatalog.AddModule(typeof(ModuleDBGraph.ModuleEntityGraph));
// KO moduleCatalog.AddModule(typeof(ModuleDBGraphFS.ModuleEntityGraphFS));
}
}
}
在 C# 项目中
public class ModuleEntityGraph : IModule
{
private IUnityContainer _container;
private readonly IRegionManager _manager;
public ModuleEntityGraph(IUnityContainer container, IRegionManager manager)
{
_container = container;
_manager = manager;
}
void IModule.Initialize()
{
}
}
在 F# 项目中
type ModuleEntityGraphFS(container:IUnityContainer, manager:IRegionManager) =
do printfn "hi"
interface Microsoft.Practices.Prism.Modularity.IModule with
member x.Initialize() =
do ()