首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂派生类型导入MEF主机应用程序的问题

复杂派生类型导入MEF主机应用程序的问题
EN

Stack Overflow用户
提问于 2010-12-11 20:46:59
回答 1查看 1.8K关注 0票数 0

在呼叫hostContainer.ComposeParts()时接收以下信息

System.ComponentModel.Composition.ChangeRejectedException未处理的

Message=The组合保持不变。由于以下错误,更改被拒绝:组合产生了单个组合错误。根本原因如下。查看CompositionException.Errors属性以获得更详细的信息。

1)没有发现匹配约束‘(exportDefinition.Metadata.ContainsKey("ExportTypeIdentity") == "ModLibrary.IDataHandler") AndAlso无效导出可能已被拒绝的有效导出。

结果:无法在部件'ModAppWorks.Host‘上设置导入'ModAppWorks.Host.DataHandler (ContractName=“ModLibrary.IDataHandler”)。元素: ModAppWorks.Host.DataHandler (ContractName="ModLibrary.IDataHandler") -> ModAppWorks.Host

System.ComponentModel.Composition.CompositionResult.ThrowOnErrors(AtomicComposition StackTrace:在System.ComponentModel.Composition.Hosting.ComposablePartExportProvider.Compose(CompositionBatch批处理)在System.ComponentModel.Composition.Hosting.CompositionContainer.Compose(CompositionBatch批处理)在System.ComponentModel.Composition.AttributedModelServices.ComposeParts(CompositionContainer容器上,( System.AppDomain._nExecuteAssembly(RuntimeAssembly attributedParts)在ModAppWorks.Host.Compose() in C:\Projects\ModAppWorks_2\HostProgram.cs:line 83 at ModAppWorks.Host.Run() at ModAppWorks.Host.Run() C:\Projects\ModAppWorks_2\HostProgram.cs:line 49 at ModAppWorks.Program.Main() at C:\Projects\ModAppWorks_2\HostProgram.cs:line 25 at C:\Projects\ModAppWorks_2\HostProgram.cs:line汇编,String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile,( Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state )在System.Threading.ExecutionContext.Run(ExecutionContext executionContext ),ContextCallback回调( ContextCallback回调),Object状态( Object state)在System.Threading.ExecutionContext.Run(ExecutionContext executionContext (System.Threading.ExecutionContext.Run(ExecutionContext executionContext),ContextCallback回调(ContextCallback回调,Object state) ( System.Threading.ThreadHelper.ThreadStart() InnerException):

导入片段:

代码语言:javascript
复制
[Import(typeof(IDataHandler))]
public Lazy<IDataHandler> DataHandler { get; set; }

但是,DataHandler是这样定义的:

代码语言:javascript
复制
[Export(typeof(IDataHandler))]
public class DataAgent : DataProvider<SqlConnection, SqlDataReader>, IDataHandler
{
    // contains an empty public ctor passing ctor parameters to DataProvider
}

DataProvider是一个抽象类,它继承了IDataHandler,实际上实现了IDataHandler接口。此外,构建直接写入主机应用程序的扩展目录。

对于我做错了什么有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-11 21:13:01

我开始怀疑构造函数不能调用带有参数的基本构造函数。我删除了对: base(param1, param2)的调用,类将导入。

编辑

好的,对此进行了更多的测试,似乎,您的类可以向基构造函数提供参数,只要基类没有继承要导入到主机的部件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4418872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档