如何创建满足远程AppDomain导入的自定义ComposablePart?

问题描述:

我已经创建了自定义ComposablePartCatalog,ComposablePartDefinitionComposablePart如何创建满足远程AppDomain导入的自定义ComposablePart?

这些全部一起工作,以便在单独的AppDomain中创建组成部分。所有这些都在工作。问题是当包含导入的导出类型的实例(即字段具有Import属性)被创建时,该字段未被设置为期望的导入类型,即它为空。

当我不使用自定义ComposablePartDefinition,即让它执行默认组合时,会创建导入,因此它不会与类型相关。所以它一定是我在自定义的Composable类中丢失的东西。

我不是这方面的专家,我一直在网上搜索有关创建自定义ComposablePart的任何信息,该信息满足导入,但可以找到有关如何正确执行此操作的任何信息。

在我的自定义ComposablePart中,我覆盖了GetExportedValue,它返回导出类型的实例,只要导出的类型不导入任何内容,此工作正常。

我明显错过了一些重要的东西,但我找不到解释如何创建导入的文档。

ComposablePart,有SetImport覆盖,但我应该如何在我的派生类中实现这个?这是让我的进口工作的关键吗?或者我需要在GetExportedValue中做些什么,当我实际创建导出类型的实例以使其“合成”其导入?

我已经想出了我自己的。在创建远程实例的“remote”AppDomain的上下文中,我需要使用新的目录(我使用从调用域传递的信息创建的)编写远程实例,并将新的CompositionContainer传递给构造函数。