gpt4 book ai didi

.net - Prism 。带有 RegisterInstance 的任务

转载 作者:行者123 更新时间:2023-12-04 06:39:20 29 4
gpt4 key购买 nike

我想了解一些事情。

我有“服务”silverlight 应用程序项目,其中包含模块类和下一个代码行到它的“初始化”方法中,以便注册类型:

unityContainer.RegisterInstance<IService>(instance);

我还有另一个“控件”silverlight 应用程序项目。模块被描述为“catalog.xaml”文件:
<Modularity:ModuleInfo
Ref="Service.xap"
ModuleName="ServiceModule"
ModuleType="Service.ModuleDefinitions.Module, Service, Version=1.0.0.0">
</Modularity:ModuleInfo>

您可以在下面找到“ Bootstrap ”代码:
protected override IModuleCatalog CreateModuleCatalog()
{
Uri uri = new Uri("catalog.xaml", UriKind.Relative);
ModuleCatalog moduleCatalog = Microsoft.Practices.Prism.Modularity.ModuleCatalog.CreateFromXaml(uri);
// NOTE: State of "ServiceModule" is "NotStarted" here...
return moduleCatalog;
}

protected override DependencyObject CreateShell()
{
Shell shell = new Shell();
Application.Current.RootVisual = shell;
IRegionManager regionManager = Container.Resolve<IRegionManager>();
regionManager.RegisterViewWithRegion("MainRegion", typeof(MainView));
return shell;
}

一个 ViewModel 类(在“Controls”项目中)包含对 IService 接口(interface)的引用,该接口(interface)必须注册到“Service”项目的 Modul 类中。

CreateModuleCatalog() 和 CreateShell() 方法在程序调试期间执行没有任何问题,但是在执行 Initialize() 方法并注册 IService 之前出现异常。

错误消息:“当前类型 Service.ServiceReference.IService 是一个接口(interface),无法构造。您是否缺少类型映射?”

我认为我只需要一次注册/映射类型,如果我已经将它完成到服务项目的模块类中,那么我不必再做一次控制项目。

我需要帮助来了解上述情况:)

最佳答案

在尝试从容器中解析对象之前,您确定此代码正在执行吗?

unityContainer.RegisterInstance<IService>(instance);

如解释 here ,使用带有接口(interface)的 RegisterInstance 方法会自动建立映射,因此您无需显式执行此操作。

但是,如果您尝试解析没有 type mapping 的接口(interface)首先建立你会得到你得到的错误,因为没有办法实例化一个接口(interface)。

关于.net - Prism 。带有 RegisterInstance 的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4465676/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com