У меня есть много точек входа в моей сборке, и я хочу, чтобы какой-то код инициализации выполнялся один раз на AppDomain до запуска любого другого кода из этой сборки. Какой был бы лучший способ сделать это?Статический конструктор для всей сборки
Одно из решений, которое я вижу, это иметь класс со статическим конструктором и наследовать каждую точку входа, которую я имею от него. Что-то вроде этого:
public class Initializer
{
static Initializer()
{
EnsureInitialized(); // Calls initialization code once and only once
}
}
public class EntryPointOne : Initializer, IEntryPoint
{
// Some code here
}
public class EntryPointTwo : Initializer, IEntryPoint
{
// Some code here
}
// etc.
Это позволяет мне избежать написания котла пластины статических конструкторов в каждой точке входа, но без несколько наследования это не всегда возможно. Можете ли вы подумать о других лучших вариантах?
http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyload.aspx –
Просьба уточнить, хотите ли вы выполнить код «один раз на сборку» или «один раз на AppDomain». Помните, что в AppDomain может быть много сборок, и в зависимости от сборки он может быть разделен между сборками (только один раз загружается). – Manfred