Visual studio 如何在DSL T4模板中引用图表?
谷歌不会来拯救我,我只是知道这是一个完美的地方 我正在为DSL编写一个自定义DirectiveProcessor,我希望能够从T4模板中访问图表 在我的DirectiveProcessor中,我使用(wait…)LoadModelAndDiagram(…)加载了域模型和图表 因此,现在该图已加载到存储中的默认分区中,但我无法在以后解决如何解析对它的引用Visual studio 如何在DSL T4模板中引用图表?,visual-studio,diagram,dsl,Visual Studio,Diagram,Dsl,谷歌不会来拯救我,我只是知道这是一个完美的地方 我正在为DSL编写一个自定义DirectiveProcessor,我希望能够从T4模板中访问图表 在我的DirectiveProcessor中,我使用(wait…)LoadModelAndDiagram(…)加载了域模型和图表 因此,现在该图已加载到存储中的默认分区中,但我无法在以后解决如何解析对它的引用 有人能指路吗 好吧,在做了大量的进一步工作之后,我决定不需要从**自定义DirectiveProcessor**中访问我的图表** 我仍然有一个
有人能指路吗 好吧,在做了大量的进一步工作之后,我决定不需要从**自定义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.
*
*/
}
使用(事务t=partition.Store.TransactionManager
.BeginTransaction(“MyTxn”,正确))
{
MyDslDiagram diagram=partition.element目录
.FindElements(true).SingleOrDefault();
/*
*现在,用你的图表做一些事情。
*
*/
}
现在,如果您加载了一个图表,那么这段代码就可以正常工作。否则,该图将返回为null,在这种情况下,我们要么显式加载该图,要么动态创建一个
在这里,我不想谈这个。也许等我睡过觉的时候再开始吧