如何创建满足远程AppDomain导入的自定义ComposablePart?
问题描述:
我已经创建了自定义ComposablePartCatalog
,ComposablePartDefinition
和ComposablePart
。如何创建满足远程AppDomain导入的自定义ComposablePart?
这些全部一起工作,以便在单独的AppDomain中创建组成部分。所有这些都在工作。问题是当包含导入的导出类型的实例(即字段具有Import属性)被创建时,该字段未被设置为期望的导入类型,即它为空。
当我不使用自定义ComposablePartDefinition
,即让它执行默认组合时,会创建导入,因此它不会与类型相关。所以它一定是我在自定义的Composable类中丢失的东西。
我不是这方面的专家,我一直在网上搜索有关创建自定义ComposablePart
的任何信息,该信息满足导入,但可以找到有关如何正确执行此操作的任何信息。
在我的自定义ComposablePart
中,我覆盖了GetExportedValue
,它返回导出类型的实例,只要导出的类型不导入任何内容,此工作正常。
我明显错过了一些重要的东西,但我找不到解释如何创建导入的文档。
在ComposablePart
,有SetImport
覆盖,但我应该如何在我的派生类中实现这个?这是让我的进口工作的关键吗?或者我需要在GetExportedValue
中做些什么,当我实际创建导出类型的实例以使其“合成”其导入?
答
我已经想出了我自己的。在创建远程实例的“remote”AppDomain
的上下文中,我需要使用新的目录(我使用从调用域传递的信息创建的)编写远程实例,并将新的CompositionContainer
传递给构造函数。