Я знаю, что этот вопрос похож на несколько предыдущих, но я не могу найти точного ответа. У меня есть прикладная среда, которая, помимо прочего, обрабатывает необработанные ошибки. На данный момент мне требуется, чтобы приложение хоста вызывало метод Register
в методе приложения Main
для регистрации обработчиков и различных подсистем. Мне бы очень хотелось избавиться от этой зависимости и заменить параметры метода Register
некоторыми атрибутами уровня сборки. Итак, мне нужен способ определить, что хост-приложение запущено из моей сборки - как если бы оно было частью .NET Framework.
Я бы хотел избежать каких-либо явных вызовов внутри хост-приложения или каких-либо специальных строк в файле конфигурации (хотя они более приемлемы). Поэтому простое добавление ссылки на сборку приводит к инициализации компонентов при запуске приложения. Кто-нибудь придумал, как это сделать?
Чтобы прояснить ситуацию, вот пример моего идеала до и после сценариев:
// BEFORE:
[System.STAThread]
private static int Main(string[] args)
{
SupportLibrary.Register(typeof(Program).Assembly, SupportLibrary.ApplicationType.WinForms);
// Get the application initialised...
}
// AFTER:
[System.STAThread]
[SupportLibrary.ApplicationType(SupportLibrary.ApplicationType.WinForms)]
private static int Main(string[] args)
{
// Get the application initialised...
}
Дело в том, что я хотел бы избавиться от явного вызова для регистрации библиотек поддержки и вместо этого зарегистрировать их неявно при запуске приложения и загрузке сборки поддержки.