2010-08-08 4 views
8

J'ai plusieurs points d'entrée dans mon assembly et je veux que le code d'initialisation soit exécuté une fois par AppDomain avant d'exécuter tout autre code de cet assembly. Quelle serait la meilleure façon de le faire?Constructeur statique pour l'ensemble

Une solution que je vois est d'avoir une classe avec un constructeur statique et d'hériter de chaque point d'entrée que je possède. Quelque chose comme ceci:

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. 

Cela me permet d'éviter d'écrire des constructeurs statiques de la plaque de la chaudière à chaque point d'entrée, mais sans multi-héritage n'est pas toujours possible. Pouvez-vous penser à d'autres meilleures options?

+0

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

+0

Veuillez indiquer si vous souhaitez exécuter le code "une fois par assembly" ou "une fois par AppDomain". Souvenez-vous qu'il peut y avoir plusieurs assemblys dans un AppDomain et, selon l'assemblage, il peut même être partagé entre assemblys (chargé une seule fois). – Manfred

Répondre

Questions connexes