2009-12-06 2 views
2

Многие популярные приложения, такие как Wordpress, WHMCS и большинство форумов PHP, позволяют плагинам подключаться к основным событиям приложения (например, регистрации, входа в систему, создавать сообщения и т. Д.), Просто указав функция с определенным именем.Настройка привязок приложений - C#/ASP.NET

Я понимаю, что эти приложения не предварительно скомпилированы, но возможно ли что-то сделать с C#? Я посмотрел на обработчики событий, но кажется, что вы можете это сделать только в том случае, если плагин обладает способностью создавать экземпляр класса, к которому мы хотим подключиться (или, по крайней мере, это то, что меня заставило поверить)

В идеале, эти крючки будут в событиях/методах класса бизнес-уровня и могут быть подключены к несколькими объектами, поэтому он будет работать как в WinForms, так и в ASP.NET MVC.

ответ

1

Существует каркас AddIn, поставляемый с .NET 3.5. Структура обеспечивает очень мощные механизмы для выявления интерфейсов с помощью хост-приложения и для управления динамически загружаемыми-разгрузочными добавлениями и т. Д.

0

Почему основная концепция, которая приходит мне на ум, - это инъекция зависимостей? Я никогда не играл с подключаемой системой в любом приложении. Может ли DI помочь с этим?

+0

Это ответ? –

+0

Если кто-то одобряет технологически, возможно, это так! –

2

Если вы разрабатываете приложение для расширяемости, это очень просто. Managed Extensibility Framework предназначен для такого рода сценариев и делает его очень простым.

Он будет включен как часть основного фреймворка в .NET 4, но доступен для загрузки в 3.5.

+0

Возможно также полезно: MEF vs. System.AddIn http://social.msdn.microsoft.com/forums/en-US/MEFramework/thread/cf6b7cbc-1123-4b32-9810-c235d9606b66 – Alex

0

Специфика на нашем senerio было бы полезно, но, как правило, Вы можете изучить поставщика psttern.

Есть 3 компонента: - абстракция куска функциональности (интерфейс/BaseClass) - фабричный метод, который выглядит конфиг, чтобы определить, какой тип класса для создания - [ваш] Пользовательский класс, который расширяет/реализует абстракцию. например, класс поставщика членства, который попадает в пользовательский источник даста для информации о пользователе.

Это очень полезно при отключении логики. Если вы хотите создать приложение с компонентами пользовательского интерфейса swappble, это еще одна история.

Существует поддержка этого в ASP.NET, начиная с 2.0. Дополнительная информация о провайдере: http://msdn.microsoft.com/en-us/library/ms972319.aspx

+0

Интересный Брайан, только что из любопытства, как вы могли бы создать компоненты с возможностью замены? – ram

+0

Ram, Честно говоря, не уверен. Я не знаю четко определенного/стандартного способа оценки этого. Я не думаю, что это было бы просто в контексте ASP.NET. –

Смежные вопросы