我有一箇中央服務(在一個非常大的在線系統中),其中類註冊爲'foo',提供者。當系統需要獲取一些foos時,請致電所有註冊的提供商。我的問題是,使類註冊的自然地方是在一個靜態的構造函數中;但是隻有在調用該類的一部分時纔會調用靜態構造函數。強制靜態構造函數被稱爲
static Widdler()
{
FooManager.RegisterProvider(() => GetMyFoos());
}
但這可能不會發生一段時間 - 類提供其他服務;他們可能會使用很多或一點點。
我可以強制這些靜態結構嗎?
任何人都可以想出更好的方法嗎? (這些不是動態加載的插件 - 在這種情況下作爲加載的一部分,我會檢查他們的IFooProvider等接口)。
編輯:好的 - 我無法控制何時調用構造函數。我應該用什麼來代替?我的中央服務並不直接瞭解這些提供商。所以調用一個'init'函數沒有打開。我正在想像一個事件公共汽車的酒吧子模型,但這是不一樣的。當用戶需要某些東西時,'訂閱者'需要給'發佈者'打電話(而不是在發生什麼事情時接到電話)
在我看來,類不應該註冊自己,它應該是別人的工作來註冊它們。也許是「FooManager」。 – hatcyl