Лучший способ заказать пункты меню, добавленные IoC / плагином Framework - PullRequest
1 голос
/ 14 января 2010

Одна из общих вещей, которые я видел в приложениях, построенных на IoC / плагинах, состоит в добавлении команд в меню или панели инструментов из динамически загружаемых плагинов. Например, плагины приложения по умолчанию предоставляют такие действия, как «Создать, Открыть, Сохранить», которые отображаются в контекстном меню для определенного элемента в рабочей области. Новый плагин может добавлять команды «Mail, Post, Encrypt», но где эти команды отображаются по отношению к «New, Open, Save»?

Как приложение, загружающее компоненты через IoC, может навести порядок в элементах, которые вводятся?

  • Требуются ли метаданные от плагинов, которые дают подсказку о том, как группировать или упорядочивать элементы?
  • Использует ли он файл конфигурации с ранее известными именами меню (или идентификаторами) для определения порядка (кажется мне немного слабым)?
  • Или «неизвестные» плагины считаются гражданами второго сорта и всегда выбрасываются в подменю?
  • Нечто, о чем я даже не подозревал (что я надеюсь увидеть в ответах)

Ответы [ 2 ]

1 голос
/ 14 января 2010

Вы можете в основном запросить товары для заказа.

Я имею в виду, что вы определяете, скажем, четыре блока (1. новый и открытый, 2. сохранить, 3. распечатать, 4. выйти). Плагины теперь могут сообщать приложению о предпочтительном блоке. Например. Один плагин хочет добавить возможности печати, поэтому он задает его для блока 3.

0 голосов
/ 06 августа 2010

Я не знаю, как это делается в других платформах, но я могу объяснить, как Mono.Addins поддерживает это. Используя Mono.Addins, вы объявляете точку расширения для меню. Надстройки смогут регистрировать команды на нем. Хитрость заключается в том, что расширения (в данном случае команды) могут иметь идентификатор, и при регистрации расширения вы можете указать идентификатор другого расширения, после или перед которым его нужно вставить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...