Есть ли что-то вроде библиотеки «Опции» для .NET? - PullRequest
0 голосов
/ 25 февраля 2010

Я работаю над системой плагинов. Некоторые плагины требуют пользовательского ввода. Я хотел бы, чтобы они могли сообщить основному приложению, какой вклад им нужен, и чтобы основное приложение решило, как его получить. Кажется, что может быть какая-то библиотека, предназначенная для определения таких опций. Таким образом, плагин может возвращать какой-то объект параметров, определяющий имена и типы параметров, которые основное приложение может использовать для определения того, какие элементы управления отображать для получения необходимых параметров.

Я понятия не имею, существует ли что-то подобное, но, скорее всего, с учетом того, что существует множество приложений, использующих такие параметры. Я думаю о таких вещах, как Firefox: config, который просто показывает огромный список опций и знает, как обрабатывать каждый из них. По сути, я хочу иметь возможность создать страницу about: config для моего основного приложения (это не веб-приложение или браузер, это всего лишь пример), который видит, какие параметры нужны плагинам, и автоматически генерирует простой интерфейс (например, about: config). ), чтобы получить эти варианты.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2010

Если это приложение WinForms, взгляните на элемент управления PropertyGrid . Вы создаете объект класса, который содержит свойства для всех параметров, которые вы хотите настроить пользователем. Затем вы устанавливаете свойство SelectedObject вашей PropertyGrid с этим объектом. Затем элемент управления создаст окно, которое позволит вашему пользователю изменять значения вашего объекта параметров во время выполнения.

0 голосов
/ 25 февраля 2010

Ваш запрос на функциональность довольно своеобразен. Обычно фреймворк (или какая-то специальная библиотека) не знает о дизайне и требованиях приложения, а также не знает, когда подходящий момент, чтобы что-то спросить у пользователя. Более того, обычно плагины загружаются по требованию, а не при запуске приложения, поэтому наличие здесь какой-либо логики пользовательского интерфейса, запускаемой инфраструктурой / библиотекой, может быть крайне неуместным.

Итак, похоже, вам нужно написать библиотеку самостоятельно.

...