Как динамически загружать (и использовать) библиотеку .net с правильно установленными зависимостями, используя версии библиотеки? - PullRequest
0 голосов
/ 22 октября 2010

Обзор ситуации.

У нас есть несколько проектов, используемых в многофункциональной системе.

  1. objectAccessLibrary.dll (несколько версий)
  2. dispatcherHandler.dll (v.1.0) (зависимость: независимая от версии часть objectAccessLibrary.dll )
  3. Обработчики событий: handler_01.dll , handler_02.dll , handler_03.dll .Зависимости: dispatcherHandler.dll (v.1.0), objectAccessLibrary.dll (конкретная версия для каждого handler_xx.dll )
  4. DispatcherService (зависимость: конкретная версия objectAccessLibrary.dll ).Динамически загружает обработчики и использует их функциональность для отправки событий.

Проблема

objectAccessLibrary.dll разрабатывается вместе сОсновная система.Выставлено несколько интерфейсов / объектов, которые можно менять от версии к версии.Поэтому dispatcherHandler.dll и DispatcherService следует перекомпилировать и повторно проверять со старыми обработчиками каждый раз, когда нам нужно добавить новый обработчик, поскольку он ДОЛЖЕН использовать новейшую версию objectAccessLibrary.dll .Но с другой стороны DispatcherService ДОЛЖЕН работать, пока hanlder_xx.dll динамически загружаются.

Текущая версия работает нормально, если новые обработчики не используют новые функции objectAccessLibrary.dll .В общем случае нам нужно загрузить разные версии objectAccessLibrary.dll и разделить некоторые объекты между ними и dispatcherHandler.dll .Как это сделать?

1 Ответ

1 голос
/ 22 октября 2010

Я бы порекомендовал посмотреть на какой-нибудь контейнер IoC, например StructureMap или Castle Windsor . Оба довольно зрелые и позволят вам динамически загружать зависимости в ваши проекты. Есть много других контейнеров, которые также могут удовлетворить ваши требования.

...