В моем собственном инструменте DSL я хочу узел в проводнике, который нельзя удалить. Кроме этого, я хочу, чтобы он был как обычный узел. По сути, мне нужен такой узел, как Поведение сериализации Xml в DSL Explorer:
Иллюстрация контекстного меню поведения сериализации Xml http://img31.imageshack.us/img31/740/xmlserializerbehavior.png
Используя Reflector в классе XmlSerializationDefinitionSerializer в сборке Microsoft.VisualStudio.Modeling.Sdk.DslDefinition.dll, я обнаружил, что это всего лишь производная от DomainClass, поэтому в этом нет ничего (очевидно) особенного.
Я определил DomainClass, который функционирует как узел, и щелчок правой кнопкой мыши позволяет мне добавлять подузлы именно так, как я хочу, чтобы он работал, я просто не могу избавиться от этого пункта меню Удалить:
Удалить иллюстрацию элемента контекстного меню http://img705.imageshack.us/img705/9033/validators.png
Я пробовал все, что мог придумать ... Я установил для свойства set private, он обходит это, я установил кратность 1..1, которая не дает никакого эффекта, кроме как ошибки, когда отсутствует узел «Validators» ... Я просмотрел все свойства как для DomainClass, так и для DomainRelationship между корневой моделью и классом домена Validators, и, похоже, ни одно из них не имеет с этим дело. Я также рассмотрел все в узле «Поведение обозревателя» в окне «Проводник DSL». Я полностью в тупике. Кто-нибудь знает, как это сделать?