我有一个(现在)是静态的类:
public static class Grob
{
    public static void Frob()
    {
        Foo.Bar();
    }
}
这很好用。代码调用:
Grob.Frob();
世界上一切都很好。现在我希望我的类实现一个接口:
public static class Grob : IOldNewGrob
{
    public static void Frob()
    {
       Foo.Bar();
    }
}
不幸的是,这不起作用,因为原因。
所以我会尝试将班级改为单身人士:
public sealed class Grob
{
   private static volatile Singleton instance;
   private static object syncRoot = new Object();
   private Grob() {}
   public static Singleton Instance
   {
      get 
      { 
         if (instance == null) 
         {
            lock (syncRoot) 
            {
               if (instance == null) 
                  instance = new Singleton();
            }
         }
         return instance;
     }
   }       
}
哪个工作得很好,除了它不起作用 - 代码不再编译:
Grob.Frob();
在其他语言中,这不是问题。我会创建一个全局Grob函数(调用Grob是因为这是现有代码需要的名称):
function Grob(): GrobSingleton;
{
   return Grob.Instance;
}
//and rename Grob class to something else
public sealed class GrobSinglton
{
   ...
}
除了 C# 没有全局函数。
到底:
- 我不需要全局函数
- 我不需要静态类来实现接口
- 我不需要单身人士
我只是希望一切正常。