2010-08-08 15 views
8

Derlememde birçok giriş noktası var ve bu derlemeden başka bir kodu çalıştırmadan önce AppDomain başına bir kez başlatılacak bazı başlatma kodu istiyorum. Bunu yapmanın en iyi yolu ne olurdu?Tüm montaj için statik yapıcı

Gördüğüm bir çözüm, statik yapıcıya sahip bir sınıfa sahip olmak ve ondan sahip olduğum her giriş noktasını devralmak. Böyle bir şey:

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. 

Bu beni her giriş noktasında ama bu mümkün değil her zaman çok miras olmadan kazan levhası statik kurucular yazılmasını önlemek sağlar. Başka daha iyi seçenekler hakkında düşünebilir misin?

+0

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

+0

Lütfen kod "yürütme başına bir kez" veya "UygulamaAlanı başına bir kez" yürütmek isteyip istemediğinizi belirtin. Bir AppDomain'de çok sayıda montaj olabileceğini ve montajlara bağlı olarak montajlar arasında bile paylaşılabileceğini unutmayın (sadece bir kere yüklenir). – Manfred

cevap