DSL T4 テンプレート内の図を参照するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/82776

  •  01-07-2019
  •  | 
  •  

質問

ここでは Google は助けに来てくれない、そして私はただ 知る ここは質問するのに最適な場所です。

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

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

これで、図はストアのデフォルトのパーティションに読み込まれましたが、後でその図への参照を解決する方法は一生わかりません。

誰か道案内してもらえませんか?

役に立ちましたか?

解決

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

標準で生成された 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.
     *
     */
}

さて、図がロードされている場合、このコードは問題なく動作します。そうしないと、 として戻ってきます ヌル, この場合、図を明示的にロードするか、動的に作成する必要があります。

ここではそれについては触れません。たぶんオン 私のブログ 少し眠ったときに!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top