我有一个(现在)是静态的类:
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# 没有全局函数。
到底:
- 我不需要全局函数
- 我不需要静态类来实现接口
- 我不需要单身人士
我只是希望一切正常。