我有一个中央服务(在一个非常大的在线系统内),其中课程将自己注册为“foo”,提供者。当系统需要获取一些 foo 时,会调用所有已注册的提供程序。我的问题是使类注册本身的自然位置是在静态构造函数中;但是只有在调用该类的一部分时才会调用静态构造函数。
static Widdler()
{
FooManager.RegisterProvider(() => GetMyFoos());
}
但这可能在一段时间内不会发生——这些类提供其他服务;它们可能会被大量或少量使用。
我可以以某种方式强制这些静态结构吗?
有人能想出更好的方法吗?(这些不是动态加载的插件——在这种情况下,作为加载的一部分,我会检查它们是否有像 IFooProvider 这样的接口)。
编辑:好的 - 我无法控制何时调用构造函数。我应该改用什么?我的中央服务不直接了解这些提供商。所以调用'init'函数没有打开。我正在尝试将 pub 子模型想象为事件总线,但这不一样。“订阅者”需要在需要某些东西时调用“发布者”(而不是在发生某些事情时被调用)