拿這個代碼,例如:爲什麼基礎構造函數在靜態上下文中?如何應對?
public class DisposeMe : IDisposable
{
public void Dispose()
{
Console.WriteLine("I'm disposed!");
}
}
public class Base
{
private readonly Object _object;
public Base(Object obj)
{
_object = obj;
}
}
public class Derived : Base, IDisposable
{
public Derived()
: base(new DisposeMe())
{
}
public void Dispose()
{
// Should dispose the object allocated in the constructor.
}
}
我有這種代碼在實際的程序。
我實際上做的是在Derived
構造更換new DisposeMe()
,成會造成&回報,但也將其保存在過程中的場的方法,這樣我就可以在Derived.Dispose
處置它。
但是我不能,因爲某些原因(超出我),base
訪問的構造函數是靜態的。爲什麼?我怎樣才能解決它?
P.S.我知道我可以將Base
更改爲IDisposable
,並讓它檢查每次處理對象時是否輸入對象是IDisposable
。我對不是感興趣。這很麻煩,效率低下,最重要的是分配對象的人應該是負責處理對象的人(否則我會在處理其他地方使用的對象的腳中拍攝自己)。
你會在哪裏把那個工廠方法(這應該創建一個'IDisposable'的)?你能提供一些示範代碼來證明你的意圖嗎?請注意,當您調用Derived構造函數時,您不能使用Derived的*實例方法,因爲您的實例仍在被構造。 –
@MattiasBuelens哦,我現在看到了問題。那麼解決方案可能是什麼?我必須有一個參考來處置。我需要改變我的設計嗎?如果是這樣的東西像什麼? – MasterMastic
_分配對象的人應該是一個負責任的人......確實。它不應該是Base存儲它的責任。你根本不應該有這個問題。認爲這是一個問題:你的基本設計是有缺陷的。 \ –