ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: peerAt
27. апреля 2013 00:21

C#

Продолжаю тему загрузки плагинов из БД, начатую в предыдущих моих постах. Недавно на работе пришлось написать небольшой движок запускающий плагины на C#. Плагины хранились в виде classlib сборки (DLL). Они хранились в поле varchar(max) в таблице MS SQL Server. Кроме собственно вызова метода класса из создаваемой сборки, по ТЗ нужно было еще навестить внешний обработчик события на событие происходящее внутри сборки. Код непосредственно делающий это тут (подразумевается наличие кода из предыдущих постов):

// создаем тип делегата
Type delegateType = transferEvent.EventHandlerType;

// создаем MethodInfo для местного метода
Type thisType = Type.GetType("MultiDBMappingTransferer.LoadAssemblyFromDBAndRUnIt.Program");
MethodInfo ourMethod = thisType.GetMethod("MsgHandler");

// конструируем нужный нам делегат
Delegate delega = Delegate.CreateDelegate(delegateType, ourMethod);

// а теперь на делегат навешиваем обработчик местный, вызывая метод Add()
MethodInfo addHandler = transferEvent.GetAddMethod();
Object[] addHandlerArgs = { delega };
addHandler.Invoke(Transferer, addHandlerArgs);

Ну, и для удобства использования, тем кому лень разбираться во всех тонкостях, публикую весь код примера грузящего сборку из БД,
создающего объекты из нее, навешивающего обработчик события и вызывающего метод объекта:
RawAssemblyReflectionExample.zip (1,81 kb)


Похожие записи


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

Способы заработка на сайте
На этом блоге было много постов про производство и раскрутку сайтов. Но пока не было про заработок на них. Пора исправить этот недочет. Здесь будут описаны по возможности не фантастичные, и не супер низко прибыльные способы. Также упор будет сделан именно на организацию процесса, а не технических деталях, которых в обилии в интернете. Несмотря на то, что как пр...

Silverlight, HTML5 и непрозрачная стратегия развития Microsoft
Оригинал статьи взят отсюда: Silverlight, HTML5 и непрозрачная стратегия развития Microsoft Автор: Peter Bright Переводчик: Mairon     По непонятным мне на данный момент причинам, похоже, что многие разработчики, присутствовавшие на недавней конференции PDC-2010 (Крупнейшая конференция Microsoft для разработчиков — Прим. переводчика), были сильн...

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий