谷歌没有来这里拯救我,我只知道这是一个完美的地方。
我正在为 DSL 编写自定义 DirectiveProcessor,我希望能够从我的 T4 模板中访问图表。
在我的 DirectiveProcessor 中,我已经使用(等待它...)LoadModelAndDiagram(...) 加载了域模型和我的图表。
因此,现在图表已加载到 Store 中的默认分区中,但我终生无法弄清楚以后如何解析对它的引用。
有人可以指导吗?
谷歌没有来这里拯救我,我只知道这是一个完美的地方。
我正在为 DSL 编写自定义 DirectiveProcessor,我希望能够从我的 T4 模板中访问图表。
在我的 DirectiveProcessor 中,我已经使用(等待它...)LoadModelAndDiagram(...) 加载了域模型和我的图表。
因此,现在图表已加载到 Store 中的默认分区中,但我终生无法弄清楚以后如何解析对它的引用。
有人可以指导吗?
好吧,经过大量进一步的工作,我决定不需要**从自定义 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,在这种情况下,我们必须显式加载图表或动态创建图表。
在这里我就不多说了。也许在我睡觉的时候在我的博客上!