類我有一個類(現在)是靜態的:靜態/單接口實現在C#
public static class Grob
{
public static void Frob()
{
Foo.Bar();
}
}
而且行之有效。代碼調用:
Grob.Frob();
和所有的東西都是對的。現在,我想我的類來實現接口:
public static class Grob : IOldNewGrob
{
public static void Frob()
{
Foo.Bar();
}
}
不幸的是不起作用的,因爲reasons。
所以我會嘗試改變上課到singleton:
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#沒有全局的功能。
中底:
- 我不需要全局函數
- 我不需要靜態類能夠實現一個接口
- 我不t 需要一個單身人士
我只是想要一切工作。
爲什麼你就不能調用'Grob.Instance.Frob()'?這就是單身人士的工作方式。 – cdhowie
@cdhowie我可以打電話給'Grob。Instance.Frob()';但現有的代碼沒有。 –