如何创建满足远程 AppDomain 中导入的自定义可组合部件



我创建了一个自定义ComposablePartCatalogComposablePartDefinitionComposablePart

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

当我不使用我的自定义ComposablePartDefinition时,即让它做默认的合成,就会创建导入,所以它与类型无关。所以这一定是我在自定义可组合类中缺少的东西。

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

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

我显然缺少一些重要的东西,但我找不到解释如何创建导入的文档。

ComposablePart中,有SetImport覆盖,但是我应该如何在我的派生类中实现它呢?这是让我的导入正常工作的关键吗?或者,当我实际创建导出类型的实例时,我是否需要在GetExportedValue中执行某些操作以使其"组合"其导入?

我自己想通了。在创建远程实例的"远程"AppDomain上下文中,我需要使用新目录(我使用从调用域传递的信息创建目录)和将远程实例传递到构造函数的新CompositionContainer来组合远程实例。

最新更新