0

ねえ、私はEMF/ECOREに不慣れです。Has-A参照(封じ込め)をモデル化したいのですが、封じ込めは実行時に利用可能である必要があります。それで:

ボリュームのあるさまざまなクラスがあります。したがって、ボリュームはクラスでモデル化されます。

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

MyClass
 - name: EString
 - volume: MyVolume

.genmodelを使用してエディターを作成する場合、クラスにボリュームを追加できます。ただし、ボリュームをクラスの一部にして、ユーザーがクラスボリュームを最初に作成しなくても、名前などの属性として使用できるようにする必要があります。また、奥行き、高さ、幅は、エディターのプロパティビューの属性名と同じように表示する必要があります。

モデルのどのプロパティを設定する必要がありますか、それとも目標をアーカイブする別の方法がありますか?

前もって感謝します

ステッフェン

私は「解決策」を見つけました:

  • MyVolumeクラスを作成してから、
  • My.impl.MyAttributeImplをインスタンスクラス名として使用するデータ型MyVolume。
  • 次に、MyClassに属性ボリュームMyVolume(データ型)を作成します。
  • したがって、このフィクスチャのようにソースコードの深さにアクセスできます。getVolume()。getDepth();
  • ただし、エディタのプロパティビューにはボリュームのみが表示されます。

他にアイデアはありますか?

ステッフェン

4

2 に答える 2

0

「MyClass」を作成するときに MyVolume のインスタンスを自動的に作成するように項目プロバイダーをオーバーライドすることもできます。

EMF Book にはそのような例がたくさんあります。これは EMF.Edit フレームワークの一般的なプレゼンテーションです。「コマンドのオーバーライド」の部分を見てください。

于 2011-02-22T07:19:22.710 に答える
0

Why not simple make MyClass extend MyVolume, instead of having an attribute? I don't think this kind of union that you want is supported in any other way.

于 2011-02-15T08:35:45.777 に答える