EMF 提供了一种处理EOperation
和derived EAttribute
使用“调用委托”的专用实现的方法。此功能允许您以字符串格式将一些实现直接放入ecore
元模型中(只要 EMF 可以“处理”所使用的语言,即存在调用委托)。
据我所知,OCL 得到很好的支持:https ://wiki.eclipse.org/OCL/OCLinEcore#Invocation_Delegate
调用委托的注册可以通过插件注册或手动执行(用于独立使用),并且该机制与 EMF 反射层(动态 EMF)一起使用:https ://wiki.eclipse.org/EMF/New_and_Noteworthy/Helios #Registering_an_Invocation_Delegate
(请注意,我从未体验过这种机制。我知道它存在,但我从未玩过它。)
编辑>
似乎这个问题与派生属性的动态代码执行无关,而是与代码注入有关(我误解了“有没有办法获取一个字符串并将这个字符串指定为派生特征计算的实现?”) .
EMF 提供了一种将放置在ecore
元模型上的代码直接注入到生成的代码中的方法。
这是EAttribute
与derived
财产的方式。EAttribute
应该将以下属性设置为:(true
您{derived volatile}
也可以添加transient
)。如果您只想要一个 getter 而没有 setter EAttribute
,您也可以将属性设置changeable
为false
.
一旦你EAttribute
的“配置好”,你必须添加一个新EAnnotation
的源设置为http://www.eclipse.org/emf/2002/GenModel
和一个key
设置为get
并value
设置为你将被注入的代码的条目(见下图)。
![在此处输入图像描述](https://i.stack.imgur.com/doFRX.png)
瞧,您的代码将使用value
您的 getter 中注入的值生成。
您可以添加相同的过程来EOperation
使用body
而不是get
.