【问题标题】:How to add a display name for a decorator in Visual Studio DSL (Domain Specific Language) Tools?如何在 Visual Studio DSL(域特定语言)工具中为装饰器添加显示名称?
【发布时间】:2016-03-05 00:03:45
【问题描述】:

在我的 DSL 项目中,我有一个带有许多装饰器的形状,这些装饰器链接到我的域类上的属性。但即使 ieach 装饰器具有 DisplayName 属性(设置为有意义的值),它也不会出现在生成的 DSL 项目中。 (我没有忘记使用重新生成 t4 文件。)

我是否必须为每个仅将显示名称作为我希望显示的值的属性创建另一个装饰器,或者是否有其他我现在无法弄清楚的方法?

【问题讨论】:

    标签: dsl vsx


    【解决方案1】:

    我假设装饰器的显示名称意味着您希望生成的 DSL 中的元素显示为“Example = a_value”,其中 a_value 是实际值,Example 是属性名称。

    我过去所做的是创建第二个不可浏览的属性“ExampleDisplay”,它是装饰器实际指向的。然后我将 ExampleDisplay 的 Kind 属性设置为“Calculated”。然后,您需要提供工具包尝试调用的方法以显示您可以执行部分​​类的装饰器。

    partial class ExampleElement
    {
        string GetExampleDisplayValue()
        {
            return "Example : " + this.Example;
        }
    }
    

    这并不理想,因为您没有在 DSL 图上设置属性的好方法,您必须使用属性窗口。 (属性窗口有时会出现滞后,除非您也挂钩基础属性的更新)。在 GUI 中进行实际 DSL 工具包所做的流畅编辑也许是可能的,但我还没有找到方法。

    如果您还没有这样做,也许值得询问VSX forums

    【讨论】:

    • 很好的答案,它并不完美,但我没想到!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    相关资源
    最近更新 更多