谷歌并没有来拯救我,我只是 知道 这是询问的最佳地点。

我正在为 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