我有一个带有接口 IModuleMainService 的模块和一个事件。
例如[Export(typeof(IModuleMainService))]
我有带接口 IMainService 的 SHELL。
例如[Export(typeof(IMainService))]
在 ModuleMain 我有导入[Import(typeof(IMainService)]
在这种情况下应用程序工作,但我想与模块和外壳通信。
我尝试将导入插入到 Shell.cs 例如
[Import]
public IModuleMainService ModuleMainService { get; set; }
但是我运行应用程序并出现错误,请参见下文。如果我评论[Import] public IModuleMainService...
应用程序运行成功。哪里有问题?
重点是:SHELL 中 Module 类的 Consum 事件。
System.ComponentModel.Composition 警告:1:ComposablePartDefinition 'Main.Silverlight.Views.Shell' 已被拒绝。组成保持不变。由于以下错误,更改被拒绝: 合成产生了单个合成错误。下面提供了根本原因。查看 CompositionException.Errors 属性以获取更多详细信息。
1) 没有找到与约束匹配的有效导出 '((exportDefinition.ContractName == "Main.ViewModels.ShellViewModel") AndAlso (exportDefinition.Metadata.ContainsKey("ExportTypeIdentity") AndAlso "Main.ViewModels.ShellViewModel".Equals( exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))',无效的导出可能已被拒绝。
导致:无法在“Main.Silverlight.Views.Shell”部分设置导入“Main.Silverlight.Views.Shell.ViewModel (ContractName="Main.ViewModels.ShellViewModel")”。元素:Main.Silverlight.Views.Shell.ViewModel (ContractName="Main.ViewModels.ShellViewModel") --> Main.Silverlight.Views.Shell --> AssemblyCatalog (Assembly="Main, Version=1.0.0.0, Culture=中立,PublicKeyToken=null")
System.ComponentModel.Composition 中发生了“System.ComponentModel.Composition.ImportCardinalityMismatchException”类型的第一次机会异常