c# JIT and static constructors again
好的,我对上面的那两件事有点问题
以下情况:
我有一个抽象类"发射器"。这个类有一个静态字典来跟踪从它派生的所有类型。
例如,我有类"LinearEmitter",这个类有一个静态构造函数。此构造函数将 typeof(LinearEmitter) 添加到字典中。现在的问题是,当我想使用来自 Emitter 的静态字典(静态方法 "getMeEmitterFromID(int id)")时,可能会发生 "Emitter"(例如 LinearEmitter)的子代未初始化(我从文件中读取数据,然后从 "Emitter" 中的类中查找 id 并从中初始化一个实例。
我怎样才能确保每个 Child-class 之前都已初始化?(已将自己写在字典中)?
当然其他人应该使用这个库,他们也应该使用静态构造函数将他们的类添加到"Emitter"\\'s Dictionary
有什么想法吗?
Eric Lippert 刚刚发表了一篇关于静态构造函数的精彩系列文章。
静态构造函数第一部分,
静态构造函数第二部分,
静态构造函数第三部分,
静态构造函数第四部分
总结一下你的情况:静态构造函数被
调用
因此,您要么调用像
除此之外,我确信有更好的方法来解决您的问题,因为静态初始化程序的运行方式可能会随着不同的
我不会公开 Dictionary 本身,而是将其作为实现细节。然后你可以创建一个类似
话虽如此,我同意您可能应该重新考虑架构的评论,因为这甚至可能没有必要。