如您所见,元模型有一个测试,它具有属性。这些也可以有子属性。
我现在要编写一个方法,它将返回属性以及所有其他子属性。这里是没有递归的简单方法。请帮帮我。
public EList<TestProperty> getProperties() {
if (properties == null) {
properties = new EObjectContainmentEList<TestProperty>(TestProperty.class, this,
Iec62264Package.TEST__PROPERTIES);
}
for (TestProperty property : properties) {
properties.add(property.getSubProperties());
}
return properties;
}
元模型
1条答案
按热度按时间iyzzxitl1#
不要修改基本生成的emf getter和setter。emf使用它们来持久化您的模型,这将引入明显的问题。
您可以添加emethod getallproperties,或者使用derived=true添加ereference allproperties。您将能够给出具体的实现,而emf持久性中不涉及这些特性。
因此,保持您的properties ereference及其getproperties()getter不变,添加getallproperties()方法或allproperties派生ereference,并使用以下代码对其进行编码:
以及testproperty eclass上返回所有子属性的方法或派生的ereference allproperties。
或者,您也可以使用magic xtext的ecoreutil2.getAllContentSoftType(mytest,testproperty.class)或从中获得灵感,并使用以下工具实现您的方法: