8

EMF を使用して、データ型 (EType) が EMF モデルの外部にある属性を定義したいと考えています。つまり、必要な型は、EMF モデルの一部ではない通常のハンドコーディング Java クラスです。使用AnySimpleTypeは最後の手段です。ジェネリック プロバイダーを使用するよりも、より多くのタイプ セーフ (およびより少ないタイプ キャスト) が必要Objectです。

Eclipse のプロパティ エディターは、EType を定義済みの値のセットに制限します。自分のクラス名を入力することも、必要なクラスをオプションのリストに追加する方法を見つけることもできません。

4

3 に答える 3

6

eClassifiers*.ecore ファイルにエントリを手動で追加することにより、eCore モデルにデータ型を追加できます。(Eclipse UI からこれを行うメカニズムを見つけることができませんでした。)

例えば:

<eClassifiers xsi:type="ecore:EDataType"
 name="MyClass" instanceClassName="my.package.MyClass"/>

これにより、EAttributes のプロパティ エディターで EType のオプションとしてクラスを使用できるようになります。EReferences で使用できるようには見えません。

于 2013-09-23T15:13:06.113 に答える
5

EMF 2.9.1 で Eclipse Kepler を使用しています。

マイケルの答えに加えて、Ecore Model Editor で右クリックして選択するだけです。

新しい子 -> EData タイプ

プロパティ ビューに値を入力します (名前、インスタンス タイプ名)。したがって、手動で追加する必要はもうありません。

于 2014-02-25T14:49:34.200 に答える
4

モデリング言語として Xcore を使用していると仮定すると、

import java.util.Date
...
type Date wraps Date

およびDateに沿って、属性のデータ型として使用できるようになりました。Stringint

最初にタイプを明示的にインポートする必要がないことを除いて、Ecore でも同じことを行います。

<eClassifiers xsi:type="ecore:EDataType" name="Date"
   instanceClassName="java.util.Date" serializable="false"/>
于 2013-09-18T14:12:12.573 に答える