1

私の DSL プロジェクトには、ドメイン クラスのプロパティにリンクされた多数のデコレータを含むシェイプがあります。しかし、ieach デコレータには DisplayName プロパティ (意味のある値に設定) がありますが、生成された DSL プロジェクトには表示されません。(t4ファイルを再生成することを忘れていません。)

表示したい値として表示名のみを持つプロパティごとに別のデコレータを作成する必要がありますか、それとも今はわからない他の方法がありますか?

4

1 に答える 1

1

デコレーターの表示名は、生成された DSL の要素を "Example = a_value" として表示することを意味すると仮定します。ここで、a_value は実際の値で、Example はプロパティ名です。

私が過去にこれで行ったことは、参照可能ではなく、デコレータが実際に指しているものである 2 番目のプロパティ「ExampleDisplay」を作成することです。次に、ExampleDisplay の Kind プロパティを "Calculated" に設定します。次に、部分クラスを実行できるデコレータを表示するためにツールキットが呼び出そうとするメソッドを提供する必要があります。

partial class ExampleElement
{
    string GetExampleDisplayValue()
    {
        return "Example : " + this.Example;
    }
}

プロパティ ウィンドウを使用しなければならない DSL ダイアグラムでプロパティを設定する適切な方法が得られないため、これは理想的ではありません。(基になるプロパティの更新にもフックしない限り、プロパティ ウィンドウからラグが発生することがあります)。実際の DSL ツールキットが行うように、GUI で洗練された編集を行うことは可能かもしれませんが、その方法はわかりません。

まだ行っていない場合は、 VSX フォーラムに質問する価値があるかもしれません。

于 2008-09-18T14:59:28.657 に答える