在我的DSL项目中,我有一个带有许多装饰器的形状,这些装饰器链接到我的域类的属性。但即使ieach装饰器具有DisplayName属性(设置为有意义的值),它也不会出现在生成的DSL项目中。 (我没有使用重新生成t4文件。)
我是否必须为每个属性创建另一个装饰器,这个属性只有显示名称作为我希望显示的值,或者还有其他一些我现在无法理解的方式?
答案 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。