Существует ли эквивалент Application_Start для библиотеки классов в С#
Я хотел бы выполнить определенный код в библиотеке классов, когда он создается из другой сборки. Есть ли точка входа или бутстрап для библиотеки классов? Я думал, что статический метод Main будет делать трюк, но я ошибся.
Приложениями для этого могут быть конфигурирование и создание экземпляра однопользовательского журнала, обработчика необработанных исключений и т.д.
Ответы
Ответ 1
AppDomain.AssemblyLoad Event, которое происходит при загрузке сборки. Вероятно, это можно использовать для вызова метода инициализации в вашей библиотеке классов.
public static void Main()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyLoad += new AssemblyLoadEventHandler(MyAssemblyLoadEventHandler);
}
static void MyAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
{
Console.WriteLine("ASSEMBLY LOADED: " + args.LoadedAssembly.FullName);
//If this is the assembly that you want to call an initialize method..
}
Ниже приведены два похожих потока
как написать загрузку сборки сборки /lib класса lib
.Net: запуск кода при загрузке сборки
Ответ 2
Вы просмотрели PreApplicationStartMethodAttribute?
using System.Web;
[assembly: PreApplicationStartMethod(typeof(ClassLibrary.Startup), "Start")]
namespace ClassLibrary
{
public class Startup
{
public static void Start()
{
// do some awesome stuff here!
}
}
}
Подробнее: http://dochoffiday.com/professional/simulate-application-start-in-class-library