DSL T4 テンプレート内の図を参照するにはどうすればよいですか?
-
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.
*
*/
}
さて、図がロードされている場合、このコードは問題なく動作します。そうしないと、 図 として戻ってきます ヌル, この場合、図を明示的にロードするか、動的に作成する必要があります。
ここではそれについては触れません。たぶんオン 私のブログ 少し眠ったときに!