如何在 DSL T4 模板中引用图表?
-
01-07-2019 - |
题
谷歌并没有来拯救我,我只是 知道 这是询问的最佳地点。
我正在为 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.
*
*/
}
现在,如果您加载了图表,此代码就可以正常工作。如果你不这样做, 图表 会回来作为 无效的, ,在这种情况下,我们要么必须显式加载图表,要么动态创建图表。
我不会在这里讨论这个。也许在 我的博客 当我睡过一会儿的时候!
不隶属于 StackOverflow