Как добавить отображаемое имя для декоратора в Visual Studio DSL (язык, зависящий от домена) Инструменты?
Вопрос
В моем DSL-проекте у меня есть фигура с несколькими декораторами, которые связаны со свойствами моего доменного класса.Но даже несмотря на то, что ieach decorator имеет свойство DisplayName (установленное в значимое значение), оно не отображается в сгенерированном DSL-проекте.(Я не забыл использовать regenerate для файлов t4.)
Должен ли я создавать другой декоратор для каждого свойства, которое имеет только отображаемое имя в качестве значения, которое я хочу отобразить, или есть какой-то другой способ, который я не могу придумать прямо сейчас?
Решение
Я предполагаю, что под отображаемым именем для декоратора вы подразумеваете, что хотите, чтобы элемент в сгенерированном DSL отображался как "Example = a_value", где a_value - фактическое значение, а Example - имя свойства.
Что я делал с этим в прошлом, так это создавал второе свойство "ExampleDisplay", которое недоступно для просмотра и на которое фактически указывает декоратор.Затем я установил для свойства Kind ExampleDisplay значение "Вычислено".Затем вам нужно предоставить метод, который инструментарий пытается вызвать для отображения декоратора, который вы можете сделать частичным классом.
partial class ExampleElement
{
string GetExampleDisplayValue()
{
return "Example : " + this.Example;
}
}
Это не идеально, так как у вас нет хорошего способа настройки свойства на диаграмме DSL, вы должны использовать окно свойств.(Иногда в окне свойств возникают задержки, если вы не подключитесь к обновлению базового свойства).Получение гладкого редактирования в графическом интерфейсе, которое делает фактический DSL toolkit, возможно, возможно, но я не выяснил, как это сделать.
Может быть, стоит спросить Форумы VSX если вы еще не сделали этого.