获取EObject对象的反向引用对象

xiaoxiao2021-03-01  10

在基于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.

转载请注明原文地址: https://www.6miu.com/read-3850143.html

最新回复(0)