在我的程序中,有一个地方需要访问从工厂解析的单例并附加其事件:

void MyMethod()
{
   myFactory.Resolve<MySingleton>().DoWork += WorkMethod;
}


问题是MyMethod可以执行多次,但是我只想附加到事件一次(否则我将得到多个调用)。所以我只想在以前没有依恋的时候依依。
还有什么比

   myFactory.Resolve<MySingleton>().DoWork -= WorkMethod;
   myFactory.Resolve<MySingleton>().DoWork += WorkMethod;

最佳答案

如果已经为单例调用了MyMethod,应该记住一些标志呢?

object myCachedSingleton = null;

void MyMethod()
{
    var s = myFactory.Resolve<MySingleton>();
    if (myCachedSingleton == s) return;
    myCachedSingleton = s;
    myCachedSingleton.DoWork += WorkMethod;
}

关于c# - 附加到工厂实例化的单例事件-什么是干净的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1730855/

10-11 14:14