我有一個相當大的開源類,我需要從靜態轉換爲非靜態。將大類從靜態轉換爲非靜態的步驟是什麼?
我需要這樣做的原因是爲了使線程安全;我想要每個線程的類的一個副本。
一般來說,推薦將C#庫從靜態轉換爲非靜態的步驟是什麼?
我有一個相當大的開源類,我需要從靜態轉換爲非靜態。將大類從靜態轉換爲非靜態的步驟是什麼?
我需要這樣做的原因是爲了使線程安全;我想要每個線程的類的一個副本。
一般來說,推薦將C#庫從靜態轉換爲非靜態的步驟是什麼?
我已將數據層從靜態升級到無靜態類。所以
1:去除類和方法「靜態」關鍵字
第二:添加您的舊靜態類辛格爾頓以及
public class Foo
{
#region Singleton
Foo()
{
}
public static Foo Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
static Nested() { }
internal static readonly Foo instance = new Foo();
}
#endregion
第三步:在每次調用您的類的富更換.Instance.DoSomething(),而不是Foo.DoSomething()
4:編譯和利潤
第四步巖! – D3vtr0n
爲了讓它編譯?從所有成員中刪除static
應該這樣做。
如果你想要更多的Kosher,那麼你應該從所有的調用中採取共同的參數,並將它們移動到構造函數中。
對我來說似乎很簡單。你有什麼特別的問題嗎?
我想你的意思是,因爲這是如此大的它類想象一下如何去做它並不容易,所以你想要遵循一些步驟。這裏所說:
MyClass.instance()
更換每學期 MyClass
。保留所有這些地方的清單,以便您可以輕鬆地重新訪問它們。MyClass.instance()
,而不是使用MyClass
來全局引用它。在每個步驟之間運行測試框架。
嗯,問題太籠統了。發佈一些代碼,你會得到更好的答案。 –
's/static // g''' – Dani
這是_waaaaaay_太寬而無法有效回答。暫時忘記一些一般的構造要應用或刪除(爲了論證的緣故,我假定你已經知道),但其他的一切都純粹與你的場景(或一組場景)有關。即你需要的不僅僅是一種使得這個類不是靜態的方式,你需要確保它是線程安全的:這不僅僅是一個實例類的結果。 –