2010-08-08 36 views
8

Tôi có nhiều điểm vào trong assembly và tôi muốn một số mã khởi tạo được thực hiện một lần cho mỗi AppDomain trước khi chạy bất kỳ mã nào khác từ assembly này. Điều gì sẽ là cách tốt nhất để làm điều đó?Hàm tạo tĩnh cho toàn bộ assembly

Một giải pháp mà tôi thấy là có một lớp với hàm tạo tĩnh và kế thừa mọi điểm vào mà tôi có từ nó. Một cái gì đó như thế này:

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. 

Điều này cho phép tôi tránh viết các bản dựng lò hơi tĩnh ở mọi điểm nhập nhưng không phải lúc nào cũng có thể thừa kế. Bạn có thể nghĩ ra bất kỳ lựa chọn nào khác tốt hơn không?

+0

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

+0

Vui lòng làm rõ bạn có muốn thực thi mã "một lần cho mỗi lần lắp ráp" hay "một lần cho mỗi AppDomain" hay không. Hãy nhớ rằng có thể có nhiều assembly trong một AppDomain và tùy thuộc vào assembly, nó có thể được chia sẻ giữa các assembly (chỉ nạp một lần). – Manfred

Trả lời

Các vấn đề liên quan