使用EMF,我想定义一个数据类型(EType)在我的EMF模型外部的属性.也就是说,我想要的类型是普通的手工编码Java类,它不属于我的EMF模型.使用AnySimpleType是最后的手段.我想要比使用通用Object提供更多的类型安全(和更少的类型转换).
Eclipse的属性编辑器将EType限制为一组预定义的值.我既不能输入自己的类名,也不能找到将我想要的类添加到选项列表中的方法.
您可以通过手动向eClassifiers*.ecore文件添加条目,将数据类型添加到eCore模型.(我无法找到通过Eclipse UI执行此操作的机制.)
例如:
<eClassifiers xsi:type="ecore:EDataType"
name="MyClass" instanceClassName="my.package.MyClass"/>
Run Code Online (Sandbox Code Playgroud)
这将使该类在EAttributes的属性编辑器中作为EType的选项可用.它似乎不适用于EReferences.
我正在使用带有 EMF 2.9.1 的 Eclipse Kepler。
添加到迈克尔的答案,在 Ecore 模型编辑器中,您只需右键单击并选择
新建子项 -> EData 类型
然后在“属性”视图中填写您的值(名称、实例类型名称)。所以你不必再手动添加它了。