我有两个类,两个都是单例实现的...也许不是最好的架构,但到目前为止应该不重要。
这就是我实施两个单身人士的方式:
private static readonly Singleton instance = new Singleton();
private Singleton(){}
public static SingletonInstance
{
get { return instance; }
}
Singleton1在Singleton2和Singleton2想要订阅Singleton1中定义的事件之前被实例化:
public delegate void MyDelegate();
public event MyDelegate OnDelegation;
我试图在Singleton2的私有构造函数中订阅该事件,如下所示:
Singleton1.Instance.OnDelegation += new Singleton1.MyDelegate(MyMethod);
......当然我也实施了MyMethod。
当我在Win32上运行此代码时,一切正常,但在使用CF 2.0的WinCE 5上,我在订阅事件时遇到MissingMethodException。当我把订阅放在构造函数之外时,f.e。在一个额外的初始化方法中,它也可以正常工作。
现在我的问题是为什么这只发生在我的设备而不是win32上?
编辑:
以下代码应解释我在启动时如何使用单例:
// Singleton2 class
private Singleton2()
{
Singleton1.Instance.OnDelegation += new Singleton1.MyDelegate(MyMethod);
}
public Initialize() { //setting variables etc. }
private MyMethod() { // do something when event is raised }
// main call structure
Singleton1.Instance.Initialize(); // Singleton1 is ready after this call
Singleton2.Instance.Initialize(); // this is were it breaks!