在基于EMF模型的应用中经常会有这样的需求:

当一个模型对象被一个特定的对象引用后,就不可以再被其他的对象引用。如何获取一个模型被那些其他模型引用了这个信息呢?

当然一种解决方案是在建模的时候,把引用设成双向的。然而这样会造成一定的冗余,使你的模型稍显臃肿和复杂。其实如果你是用EMF来表示你的模型,通过EMF提供的API可以获得所有引用某个model的model列表:

代码如下:

EObject referencedModel = getReferencedModel();  // 被引用的对象

List adapters = referencedModel .eAdapters();          //获得所有与对象关联的adapter

 

for(Iterator it = adapters.iterator();it.hasNext();) {
        Object obj = it.next();
        // if the adapter is cross reference adapter
        if(obj instanceof CrossReferenceAdapter) {

                 Set refs = null;

                 // 返回所有引用referencedModel的对象

                 refs = ((CrossReferenceAdapter) obj).getInverseReferencers(referencedModel, null,null);

         }
}

方法getInverseReferencers()的参数参考EMF API.

相关文章:

  • 2021-06-21
  • 2021-12-06
  • 2022-12-23
  • 2021-08-07
  • 2021-11-18
  • 2021-10-14
  • 2021-12-20
猜你喜欢
  • 2021-11-30
  • 2021-05-11
  • 2021-12-19
  • 2021-11-07
  • 2022-12-23
  • 2021-06-03
相关资源
相似解决方案