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

时间:2008-09-16 12:48:49

标签: dsl vsx

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

我是否必须为每个属性创建另一个装饰器,这个属性只有显示名称作为我希望显示的值,或者还有其他一些我现在无法理解的方式?

1 个答案:

答案 0 :(得分: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