在 EMF 中定义 EEList 类型属性时出错
Error while defining a EEList Type attribute in EMF
在 Eclipse 中,我试图将一个列表添加到我的 EMF 模型中。
在 .ecore 模型中:
- 我在 EMF
中向我的模型添加了一个新的 class "MyClass"
- 然后给这个class添加一个属性"MyList",设置这个属性的EType为EEList<>
- 然后将列表元素的数据类型设置为 EString。
但是当我尝试打开这个模型的genmodel时,出现了一个错误提示:
"The attribute 'MyClass.MyList' is not transient so it must have a data type that is serializable".
我做错了什么?
提前致谢。
您不必 'manually' 将其作为列表来处理。
请记住,您正在使用 UML。
列表只是类型的有序关联,其中上限设置为 *。
因此,只需将 MyList
添加到 MyClass
,将其重数设置为 0..-1(通过将其上限设置为 -1,即 EMF 中的 *)并确保关联的 Ordered
属性 设置为 True(否则你会得到一个 Set)。同时将其类型设置为 EString。
这里有一个例子,其中一个DFA
有一个State
类型的列表,按照上面的说明。我还将 "containment" 设置为 true,以使列表持有它包含的对象的强引用(这与内存管理有关,我建议您也这样做)。请注意,我已将类型设置为 State,因为这是一个 State 对象列表。
在 Eclipse 中,我试图将一个列表添加到我的 EMF 模型中。 在 .ecore 模型中:
- 我在 EMF 中向我的模型添加了一个新的 class "MyClass"
- 然后给这个class添加一个属性"MyList",设置这个属性的EType为EEList<>
- 然后将列表元素的数据类型设置为 EString。
但是当我尝试打开这个模型的genmodel时,出现了一个错误提示: "The attribute 'MyClass.MyList' is not transient so it must have a data type that is serializable".
我做错了什么?
提前致谢。
您不必 'manually' 将其作为列表来处理。
请记住,您正在使用 UML。
列表只是类型的有序关联,其中上限设置为 *。
因此,只需将 MyList
添加到 MyClass
,将其重数设置为 0..-1(通过将其上限设置为 -1,即 EMF 中的 *)并确保关联的 Ordered
属性 设置为 True(否则你会得到一个 Set)。同时将其类型设置为 EString。
这里有一个例子,其中一个DFA
有一个State
类型的列表,按照上面的说明。我还将 "containment" 设置为 true,以使列表持有它包含的对象的强引用(这与内存管理有关,我建议您也这样做)。请注意,我已将类型设置为 State,因为这是一个 State 对象列表。