假设我在 Mate 事件映射中实例化两个子对象:
<EventMap>
...
<ObjectBuilder generator="{SubModelA}" />
<ObjectBuilder generator="{SubModelB}" />
...
</EventMap>
。还有一个主对象,它必须包含集合中的先前对象:
...
<ObjectBuilder generator="{MainModel}" />
...
如何使用 Mate 将创建的子模型 A 和子模型 B 对象作为集合分配给 MainModel 中的属性?
使用 Mate PropertyInjector
将它们注入到 MainModel
中的适当 setter 中,该 setter 处理集合逻辑。像这样:
<ns:Injectors target="{MainModel}">
<ns:PropertyInjector source="{SubModelA}" targetKey="updateCollection"/>
<ns:PropertyInjector source="{SubModelB}" targetKey="updateCollection"/>
</ns:Injectors>
当然,您必须在 updateCollection
方法中为已添加的模型添加大量检查。使用自定义[Bindable]
元数据,您甚至可以支持绑定到 MainModel
中的集合。这有点丑陋(实际上,依赖注入的使用非常糟糕),但我很确定您无法以合理的方式实例化 EventMap 中的任何集合。另一种方法是创建自定义 Mate 操作(这并不难,请参阅来源以获取有关如何执行此操作的提示)。您也可以考虑简化您的设计。