Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Нужно написать программу с поддержкой плагинов


Автор: compaq 10.3.2010, 18:24
Есть программа у неё есть экземпляр класса List в который с некоторой периодичностью добавляются новые данные. Задача модифицировать программу так что бы можно было делать плагины которые обрабатывали List с данными. Но нужна оптимизация параметров этих плагинов. К примеру Вася Пупкин написал плагин к нашей программе, некая Марь Иванна подключила плагин Васи к программе. Но её не устроили параметры предлагаемые Васей по умолчанию. И она хочет адоптировать плагин к специфики своей задачи. Но так как программировать она не умеет максимум что она может сделать это задать диапазон параметров для оптимизации (к примеру от 1 до 100) и оставить комп на ночь что бы он нашёл оптимальные значения. А теперь вопрос как такое написать. Если параметры у плагинов не стандартизированные. У Васинового плагина только 2 параметра а у Петиного 8. Интересуют статьи, советы, примеры исходников. Заранее спасибо. Пишу на C#

Автор: Voyager 11.3.2010, 11:05
Ничего неясно. Приведите примеры кода.

Автор: 17dufa 12.3.2010, 17:40
compaq, как минимум 2 пути:
класс плагина реализует интерфейс типа такого:
Код

interface IPlaginInfo
{
   IList<IParamInfo> GetParams();
   void SetParams(IList<IParamInfo> params);
}
interface IParamInfo
{
  string Name{get;}
  Type TypeOf{get;}
  object Value{get;set;}
}

второе: в классе плагина некоторые свойства помечены специальным атрибутом, запускаешь рефлекшин по классу и ищешь такие свойства.
ну и в довесок пишется формочка, которая позволяет Марь Иванне задать  значения произвольного кол-ва параметров произвольного типа (ну или типа из определенного набора типов). как вариант: комбобокс с названиями полей, а рядом тексбокс с значениями. главное хоть минимальную защиту от дурака, чтоб она в поле даты не ввела "привет" и тп.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)