多变量复杂单例

时间:2009-07-05 03:00:01

标签: c# .net singleton

我有一对带有复杂的一次性初始化的静态字段。我希望这种初始化是懒惰的, a la 标准singleton pattern

但是,初始化过程涉及两个字段,因此我无法将其分成两个不同的单例。

处理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

创建一个包装类,其中包含对“单例”的引用,并使该类成为单例?

<强>附录:
如果你真的想通过这种方法避免第二级间接,你总是可以分两个阶段来完成:

  • 创建一个封装单个单身人士(原始点)
  • 的新单身人士
  • 为每个原始单例(具有单独的支持字段)创建一个单例,该单例从组合单例初始化,以保证所有单例都是原子初始化的

答案 1 :(得分:0)

我目前正在这样做:

class OuterType {
    //...

    static class FieldInitializer {
        public static readonly SomeType field1, field2;

        static FieldInitializer() {
            //Complicated code that sets both fields together
        }
    }

    //...
}

有没有人有其他想法?