2010-08-08 13 views
8

Ich habe viele Einstiegspunkte in meiner Assembly und ich möchte einige Initialisierungscode einmal pro AppDomain ausgeführt werden, bevor Sie anderen Code von dieser Assembly ausführen. Was wäre der beste Weg, dies zu tun?Statischer Konstruktor für die gesamte Assembly

Eine Lösung, die ich sehe, ist eine Klasse mit statischem Konstruktor zu haben und jeden Eingangspunkt zu erben, den ich davon habe. Etwas wie folgt aus:

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. 

Dies lässt mich in jedem Einstiegspunkt statischen Konstruktoren schreiben Kesselblech vermeiden, aber ohne Mehr Vererbung dies nicht immer möglich ist. Können Sie sich andere bessere Möglichkeiten vorstellen?

+0

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

+0

Bitte klären Sie, ob Sie Code "einmal pro Assembly" oder "einmal pro AppDomain" ausführen möchten. Denken Sie daran, dass es in einer AppDomain viele Assemblys geben kann und je nach Assembly sogar zwischen Assemblys aufgeteilt werden kann (nur einmal geladen). – Manfred

Antwort

Verwandte Themen