Хобрук: Ваш путь к мастерству в программировании

Есть ли способ использовать события, просто скопировав dll в корзину?

У меня есть веб-приложение asp.net, и в нем мало событий приложения; скажем, например - Создать пользователя. Один из моих клиентов хочет получать уведомление при создании нового пользователя. Итак, у меня есть dll, специфичная для этого клиента, где я могу поместить логику для отправки уведомления, зарегистрировавшись в событии приложения onCreateUser.

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

Редактировать: я знаю, что это можно сделать путем динамической загрузки dll, применяя отражение с использованием атрибутов, таких как PreApplicationStartMethodAttribute, или с помощью интерфейса и т. д. Но хотел убедиться, что я не изобретаю велосипед.


  • Я бы посмотрел на динамическую загрузку сборки. Если вы просто удалите/замените его, потребуется перезапустить приложение, чтобы зарегистрировать изменение. 28.04.2017
  • Спасибо, Майк! Под динамической загрузкой вы имеете в виду поиск конкретной реализации интерфейса или использование каких-либо атрибутов? Моя первоначальная мысль, что PreApplicationStartMethodAttribute решит эту проблему; но не уверен, смогу ли я зарегистрировать свои собственные события с таким подходом 28.04.2017
  • Моя первая склонность заключалась бы в том, чтобы динамически загружать dll, а затем использовать отражение для вызова необходимых методов. Вот поток SO относительно чего-то подобного: stackoverflow.com/questions/1137781/, но вы можете просто выполнить поиск С# с динамической загрузкой сборки в google/bing, и это должно вам помочь началось 28.04.2017
  • Майк, динамическая загрузка - это мое последнее средство; Я могу сделать это лучше, используя атрибуты. Я могу найти классы с этим атрибутом (может быть даже методы) и вызывать их, чтобы я мог выполнять несколько действий в нескольких dll для события. Но я просил любой другой подход к решению этой проблемы, используя что-то уже в рамках, чем я заново изобретаю колесо. 28.04.2017

Ответы:


1

Я предполагаю, что вы пытаетесь/реализовали шаблон наблюдателя для ООП? Потому что это шаблон, по которому я буду строить свой код.

Итак, псевдокод:

 notification method{User createdUser}
{
   bool shouldNotify = dataHandler.getUserNotificationValue(createdUser);
   if(shouldNotify )
   {
       notifier.SendNotification();
   }
}

Это сняло бы требование даже иметь клиент DLL pr, просто файл db/xml/и т.д. со списком отношений между клиентами, которым требуется уведомление.

28.04.2017
  • Я не могу указать это условие явно в своем исходном коде. Я ищу подключаемое решение 28.04.2017
  • Если вы вообще не можете изменить исходный код, я не уверен, как вы будете взаимодействовать с плагином. Но, возможно, вы хотите выполнить проверку, а не просто определить, существует ли DLL? stackoverflow .com/questions/2292578/ 28.04.2017
  • Новые материалы

    Прогресс в технологии Трансформеров часть 3
    Многомасштабный управляющий сигнальный преобразователь для бесфазного синтеза движения (arXiv) Автор: Линтао Ван , Кун Ху , Лей Бай , Юй Дин , Ваньли Оуян , Чжиюн Ван . Аннотация:..

    Представляем поддержку компонентов Vue.js. Мгновенный HMR и многое другое.
    Хотя у FuseBox уже был плагин Vue, он был базовым и не имел многих функций, которые делали работу с Vue.js такой приятной. Однако с этим выпуском мы рады сообщить, что в FuseBox..

    Приключения в Javascript, часть 1
    Я продолжаю думать о том, чтобы писать больше, но чем больше я думаю об этом, тем меньше я это делаю. Итак, сегодня я перестал думать и начал писать. Отсюда можно только спускаться… В..

    Понимание дженериков в TypeScript: подробное руководство
    Введение TypeScript, строго типизированный надмножество JavaScript, хорошо известен своей способностью улучшать масштабируемость, удобочитаемость и ремонтопригодность приложений. Одной из..

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..