инициализировать проекты библиотеки при запуске приложения - PullRequest
0 голосов
/ 25 июля 2011

В моем решении у меня есть несколько библиотечных проектов.
Я хочу, чтобы каждый проект библиотеки выполнял инициализацию при запуске приложения.

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

Эти библиотеки можно использовать в веб-приложении или в приложении win.

Каков наилучший способ сделать это?

EDIT:
Пример: «Общий» проект, на который ссылаются проекты «Передачи». «Общий» определяет структуру оповещений, которая позволяет регистрироваться. При инициализации приложения я хочу, чтобы «Передачи» регистрировали свои собственные оповещения в структуре оповещений «Общие».

Ответы [ 2 ]

3 голосов
/ 25 июля 2011

Я бы рекомендовал использовать что-то вроде Managed Extensibility Framework , а затем вы можете создать интерфейс, содержащий метод Initialize, при запуске приложения вы будете использовать MEF для получения всех доступных библиотек ивызовите их Initialize метод.Это намного более гибко и позволяет добавлять и удалять новые компоненты в будущем.

3 голосов
/ 25 июля 2011

Не совсем уверен, что вы пытаетесь достичь. При использовании статики у вас нет гарантированного порядка, в котором они инициализируются. Это не может быть требованием.

Другой вариант - реализовать простой класс в каждой библиотеке, предполагая, что это также сборки, содержащие управляемый код.

В последовательности запуска вашего приложения вы можете использовать отражение, чтобы просмотреть все библиотеки, а затем найти этот простой класс в каждой библиотеке, создать один его экземпляр и вызвать метод, содержащий код инициализации.

Существуют разные способы идентификации простого класса в каждой библиотеке. Я бы порекомендовал им реализовать конкретный интерфейс или наследовать от определенного класса. В этом случае у вас будет четко определенный интерфейс, который может использовать последовательность запуска вашего приложения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...