我有一个要求,我必须在调用该类中的任何静态方法之前先调用一些初始化方法。

现在的问题是,每当我向该类添加新的静态方法时,我都忘了调用该初始化方法,我想知道是否有任何设计模式可以解决此问题。我希望在从类中调用静态方法时始终调用初始化方法。

最佳答案

对于此问题,AOP可能是一个过大的杀伤力。您可能想尝试的是将每个静态方法委托给另一个类,然后将初始化代码添加到该类的构造函数中。就像是:

class StaticClass {
    public static void m1 () {
      new Worker().m1();
    }
    public static void m2 () {
      new Worker().m2();
    }
}

class Worker {
   public Worker() {
     intialize();
   }
   public void m1() {
     // Real m1 work
   }
   public void m2() {
     // Real m2 work
   }
}


这至少解决了忘记放入初始化代码的调用的问题。

也就是说,这看起来像:https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem

您能退一步告诉我们您为什么需要这个吗?

关于c# - 设计模式,以便始终在调用静态方法之前调用静态init方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5698229/

10-11 08:38
查看更多