如何在运行时可用的ECORE中创建Has-A引用(包含)?

时间:2011-02-14 19:13:11

标签: eclipse uml eclipse-emf

嘿 我是EMF / ECORE的新手。我想建模一个Has-A参考(Containment),但是包含 应该在运行时可用。所以:

我有不同的有卷的类。所以音量在一个类中建模:

MyVolume
 - depth: EDouble
 - height: EDouble
 - width: EDouble
 - volume()

MyClass
 - name: EString
 - volume: MyVolume

如果使用.genmodel创建编辑器,我可以添加到Class a Volume。但我希望volumne是Class的一部分,这样用户就可以使用Class Volume作为名称之类的属性,而无需先创建它。深度,高度和宽度应与编辑器属性视图中的属性名称显示方式相同。

应该设置模型中的哪个属性,还是存在另一种归档目标的方法?

提前致谢

斯特芬

我想出了一个“解决方案”:

  • 我创建了MyVolume类,然后是
  • 使用My.impl.MyAttributeImpl作为实例类名称的数据类型MyVolume。
  • 然后在MyClass中创建一个属性卷:MyVolume(Datatype)。
  • 所以我可以在源代码中深入了解这个fixture.getVolume()。getDepth();
  • 但只有卷显示在编辑器的属性视图中。

还有什么想法?

斯特芬

2 个答案:

答案 0 :(得分:0)

为什么不简单地使MyClass扩展MyVolume,而不是拥有属性?我认为你想要的这种联盟不会以任何其他方式得到支持。

答案 1 :(得分:0)

您还可以覆盖项目提供程序,以便在创建“MyClass”时自动创建MyVolume实例。

EMF Book有很多像这样的例子,here is the general presentation of the EMF.Edit framework,看看“覆盖命令”部分。