0

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

我有不同的课程有一个卷。所以体积是在一个类中建模的:

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 中创建一个属性volume:MyVolume(Datatype)。
  • 所以我可以像这样在源代码中访问深度 fixture.getVolume().getDepth();
  • 但只有卷显示在编辑器的属性视图中。

还有什么想法吗?

史蒂芬

4

2 回答 2

0

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

EMF Book 有很多这样的例子,这里是 EMF.Edit 框架的一般介绍,看看“覆盖命令”部分。

于 2011-02-22T07:19:22.710 回答
0

为什么不简单 make MyClassextend MyVolume,而不是拥有一个属性?我认为你想要的这种工会不会以任何其他方式得到支持。

于 2011-02-15T08:35:45.777 回答