2010-08-08 12 views
8

Ho molti punti di accesso nel mio assieme e voglio che venga eseguito un codice di inizializzazione una volta per AppDomain prima di eseguire qualsiasi altro codice da questo assembly. Quale sarebbe il modo migliore per farlo?Costruttore statico per l'intero assieme

Una soluzione che vedo è avere una classe con costruttore statico ed ereditare ogni punto di ingresso che ho da esso. Qualcosa di simile a questo:

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. 

Questo mi permette di evitare di scrivere piastra caldaia costruttori statici in ogni punto di ingresso, ma senza più l'ereditarietà questo non è sempre possibile. Riesci a pensare ad altre opzioni migliori?

+0

http://msdn.microsoft.com/en-us/library/system.appdomain.assemblyload.aspx –

+0

Si prega di chiarire se si desidera eseguire codice "una volta per assembly" o "una volta per AppDomain". Ricorda che possono esserci molti assembly in un AppDomain e, a seconda dell'assembly, possono essere condivisi anche tra gli assembly (caricati solo una volta). – Manfred

risposta

Problemi correlati