2

谷歌没有来这里拯救我,我只知道这是一个完美的地方。

我正在为 DSL 编写自定义 DirectiveProcessor,我希望能够从我的 T4 模板中访问图表。

在我的 DirectiveProcessor 中,我已经使用(等待它...)LoadModelAndDiagram(...) 加载了域模型和我的图表。

因此,现在图表已加载到 Store 中的默认分区中,但我终生无法弄清楚以后如何解析对它的引用。

有人可以指导吗?

4

1 回答 1

2

好吧,经过大量进一步的工作,我决定不需要**从自定义 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,在这种情况下,我们必须显式加载图表或动态创建图表。

在这里我就不多说了。也许在我睡觉的时候在我的博客上!

于 2008-09-19T21:08:34.057 回答