当我尝试注入FSharp库时出现了解决错误,但是我没有使用CSharp库。
我有3个项目:
依赖项的解析失败,type = “ModuleDBGraphFS.ModuleEntityGraphFS”,name =“(none)”。例外 发生在:同时解决。例外情况是: InvalidOperationException - 当前类型, Microsoft.Practices.Unity.IUnityContainer,是一个接口,不能 被建造。你错过了类型映射吗?
在例外时,容器是:
解析ModuleDBGraphFS.ModuleEntityGraphFS,(无)解析 参数“容器”的构造函数 ModuleDBGraphFS.ModuleEntityGraphFS(Microsoft.Practices.Unity.IUnityContainer container,Microsoft.Practices.Prism.Regions.IRegionManager manager) 解析Microsoft.Practices.Unity.IUnityContainer,(无)
第一个项目中的应用程序类(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 ()
答案 0 :(得分:0)
出于某种原因,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扩展在某处注册....)