代码之家  ›  专栏  ›  技术社区  ›  Alex Duggleby

如何在Visual Studio DSL(特定于域的语言)工具中添加装饰器的显示名称?

  •  1
  • Alex Duggleby  · 技术社区  · 16 年前

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

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

    1 回复  |  直到 9 年前
        1
  •  1
  •   Ian G    16 年前

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

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

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

    这并不理想,因为在DSL图上没有很好的设置属性的方法,所以必须使用“属性”窗口。(有时会滞后于属性窗口,除非您也钩住了基础属性的更新)。在图形用户界面中进行巧妙的编辑,实际的DSL工具包可能是可行的,但我还没有找到解决方法。

    也许值得问一下 VSX forums 如果你还没有这样做。

    推荐文章