【问题标题】:Set the parent of an EMF EObject设置 EMF EObject 的父级
【发布时间】:2021-05-12 11:16:21
【问题描述】:

考虑两个 EObject,它们都是通过一些工厂方法创建的

EObject parent = instantiateAParent();
EObject child = instantiateAChild();

我希望child 的父级是parent。这是否可以在不依赖childparent 的确切类型的情况下做到这一点?如果是,怎么做?

【问题讨论】:

    标签: eclipse-emf


    【解决方案1】:

    是的,这是可能的。您要做的是:

    • 检索父级 (parent.eClass()) 的类型(在 Ecore 意义上)
    • 通过 isContainment 为 true (eClass.getEAllContainments()) 查找其所有 EReferences
    • 在这些包含引用中,您希望至少找到一个其类型与子类型兼容的 (eReference.getEReferenceType().isInstance(child))
    • 由于此时您可能有多个包含引用,因此您可以使用任何算法来选择一个(可能会询问用户等)
    • 设置您选择的参考值 (parent.eSet(eReference, child))。请注意,如果您选择的包含引用是单值的,这可能会对您的模型产生重大影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多