2

ここでは、Google は私の助けにはなりません。私は、ここが質問するのに最適な場所であることを知っています。

DSL 用のカスタム DirectiveProcessor を作成しており、T4 テンプレート内からダイアグラムにアクセスできるようにしたいと考えています。

DirectiveProcessor 内で、ドメイン モデルとダイアグラムを (待って...) LoadModelAndDiagram(...) を使用してロードしました。

これで、ダイアグラムはストアの既定のパーティションに読み込まれましたが、後でそれへの参照を解決する方法を見つけることはできません。

誰でも道を案内できますか?

4

1 に答える 1

2

さて、さらに多くの作業を行った結果、カスタム DirectiveProcessor 内からダイアグラムにアクセスする必要はないと判断しました。

ドメイン モデルをロードするときに、標準で生成されたものは既存のダイアグラムをロードしないため、カスタムの DirectiveProcessor をまだ取得しています。

ダイアグラムとモデルを同時にロードするカスタム DirectiveProcessor を取得するのは簡単です。標準で生成された DirectiveProcessor 基本クラスをサブクラス化し、オーバーライドします。

protected override bool LoadDiagramData
{
    get
    {
        return true;
    }
}

さて、ダイアグラムがロードされたので、元の質問に戻りますが、どのようにアクセスすればよいでしょうか? このような:

using (Transaction t = partition.Store.TransactionManager
           .BeginTransaction("MyTxn", true))
{
    MyDslDiagram diagram = partition.ElementDirectory
        .FindElements<MyDslDiagram>(true).SingleOrDefault();

    /*
     * Now, do stuff with your diagram.
     *
     */
}

ダイアグラムがロードされている場合、このコードは問題なく機能します。そうしないと、ダイアグラムはnullとして返されます。その場合、ダイアグラムを明示的にロードするか、ダイアグラムを動的に作成する必要があります。

ここでは、そのことには触れません。寝てたらブログに書いてるかも!

于 2008-09-19T21:08:34.057 に答える