Как добавить отображаемое имя для декоратора в Visual Studio DSL (язык, зависящий от домена) Инструменты?

StackOverflow https://stackoverflow.com/questions/71843

  •  09-06-2019
  •  | 
  •  

Вопрос

В моем 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 если вы еще не сделали этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top