Tengo muchos puntos de entrada en mi ensamblado y deseo que se ejecute un código de inicialización una vez por DominioDeDominios antes de ejecutar cualquier otro código de este ensamblaje. ¿Cuál sería la mejor manera de hacerlo?Constructor estático para todo el conjunto
Una solución que veo es tener una clase con constructor estático y heredar cada punto de entrada que tengo de ella. Algo como esto:
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.
Esto me permite evitar la escritura de constructores estáticos placa de la caldera en cada punto de entrada pero sin multi-herencia, esto no siempre es posible. ¿Puedes pensar en alguna otra mejor opción?
http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyload.aspx –
Aclare si desea ejecutar el código "una vez por conjunto" o "una vez por dominio de aplicación". Recuerde que puede haber muchos ensambles en un Dominio de aplicación y, dependiendo del ensamblaje, incluso puede ser compartido entre ensamblajes (solo cargado una vez). – Manfred