2010-08-08 5 views
8

내 어셈블리에 많은 진입 점이 있으며이 어셈블리의 다른 코드를 실행하기 전에 AppDomain마다 한 번 실행되는 초기화 코드가 필요합니다. 가장 좋은 방법은 무엇입니까?전체 어셈블리의 정적 생성자

내가 볼 수있는 한 가지 해결책은 정적 생성자를 사용하여 클래스를 만들고 여기에서 얻은 모든 진입 점을 상속받는 것입니다. 이런 식으로 뭔가 :

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. 

이 날 모든 진입 점에서하지만이 가능 항상없는 다중 상속하지 않고 보일러 플레이트 정적 생성자를 작성하지 않도록 할 수 있습니다. 다른 더 나은 옵션을 생각해 볼 수 있습니까?

+0

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

+0

"어셈블리 당 한 번"또는 "AppDomain 당 한 번"코드를 실행할지 확인하십시오. AppDomain에는 많은 어셈블리가있을 수 있으며 어셈블리에 따라 어셈블리간에 공유 될 수도 있습니다 (한 번만로드 됨). – Manfred

답변

관련 문제