У меня довольно простое консольное приложение, которое отслеживает почтовый ящик обмена, выбирает определенные электронные письма и обновляет несколько баз данных на основе содержимого.
Я хотел бы реализовать пару подобных систем.Хотя было бы очень просто дублировать эту систему, я смотрю на более сложное решение - в основном интеллектуальное упражнение, учебное упражнение.
Я хотел бы создать основное приложение, которое периодически получает информацию шаблона изDB;эта информация будет указывать приложению, которое должно отслеживать данный почтовый ящик на наличие писем с заданными характеристиками через определенный интервал.
Я предполагаю создание главного шаблона (сборки) с некоторыми виртуальными функциями (предварительная обработка, элементы процесса, элементы архива, отправка уведомлений и т. Д.).В свою очередь, я бы создал любое количество шаблонов, которые реализуют интерфейсы в главном шаблоне, но функциональность может сильно отличаться в каждом случае, один может обновлять базу данных, тогда как следующий может хранить что-то в файловой системе.
Мой первый вопрос: является ли это разумной реализацией?
Мой второй вопрос - как динамически ссылаться на каждый шаблон и как бы я вызывал методы этих шаблоновв нужное время?
Если бы я расширил свой проект шаблонов, добавив новый класс для каждого нового требуемого шаблона, я бы преодолел проблему динамической ссылки на шаблоны.Но если бы я хотел сохранить их в отдельных сборках ... Есть ли способ просто вставить их в проект?Не забывайте, шаблоны будут перечислены в БД, поэтому приложение будет знать о них, но как их использовать ...
ОБНОВЛЕНИЕ : я имеюпонял, как я могу динамически ссылаться на каждый класс шаблона;мне нужно указать имя, соответствующее сборке GetType : я попытался динамически сгенерировать шаблон в основном приложении:
string aqn= "MasterTemplates.TestTemplate, TestTemplate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
MasterTemplate mt = (MasterTemplate)Activator.CreateInstance(Type.GetType(aqn));
Так что еслиЯ продолжаю обновлять свой проект MasterTemplates, добавляя новые классы по мере необходимости, я могу достичь того, к чему стремлюсь. Тем не менее, как я могу обрабатывать различные сборки шаблонов?
А пока я кратко расскажу о предложении DBM о структуре управляемой расширяемости.
Вывод: У меня нет времени на полное расследование MEF;хотя это излишне для моих текущих потребностей, это выглядит чрезвычайно многообещающе.И я не понял, как легко разрабатывать и использовать разные сборки для разных шаблонов - вместо этого я храню все шаблоны в одной сборке, которую мне придется перекомпилировать и обновлять каждый раз, когда мне требуется новый шаблон.Не такой сложный, как альтернатива MEF, но более простой и подходящий для моих текущих потребностей.