【问题标题】:How do I reference a diagram in a DSL T4 template?如何在 DSL T4 模板中引用图表?
【发布时间】:2008-09-17 12:49:25
【问题描述】:

Google 不会在这里来救我,我只是知道这是询问的最佳场所。

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

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

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

谁能指路?

【问题讨论】:

    标签: visual-studio diagram dsl


    【解决方案1】:

    好吧,经过大量进一步的工作,我决定不需要**从自定义 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.
         *
         */
    }
    

    现在,如果您加载了图表,此代码就可以正常工作。如果不这样做,diagram 将返回为 null,在这种情况下,我们要么必须显式加载图表,要么动态创建图表。

    这里我就不多说了。也许在我睡过觉的时候my blog

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 1970-01-01
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多