我看過並沒有完全找到類似於我正在處理的內容。希望有一個解決方案,或提供更好的實施。我有一個可以傳遞一個可選參數的類,該參數被保存到創建的實例中。然後我有一個具有類似可選參數的派生類,但在其非參數構造函數中執行其他準備工作,而不考慮可選參數。讓它調用基類參數構造函數的正確方法是什麼,但仍然執行派生的非參數構造函數。調用base()和this()的構造函數
public class MyBaseClass
{
protected object preserveParm;
protected int someValue;
public MyBaseClass()
{
someValue = 1;
}
public MyBaseClass(object SomeParm) : this()
{
preserveParm = SomeParm;
}
}
public class DerivedClass : MyBaseClass
{
private int customSecondaryProp;
private DateTime when;
public DerivedClass()
{
customSecondaryProp = 10;
someValue = 5;
}
public DerivedClass(object SomeParm) : base(SomeParm)
{
when = DateTime.Now;
}
}
所以,如果我做了
DerivedClass test = new DerivedClass("testing");
我需要它擊中了基類來保存參數,但也打擊了派生類的非參數設置採樣虛假值。
現在,Derived參數方法被命中,然後命中基類的參數構造函數,該構造函數調用基類的「this()」,並將鏈返回到DerivedClass參數構造函數,完成自身,但從不碰到DerivedClass構造函數。有沒有辦法強制baseclass無參數和DerivedClass無參數構造函數?
我通常有非參數的構造函數調用參數的構造函數有一個合適的值,而不是你周圍的道路」重新做。然後所有的邏輯結束於類參數最多的構造函數,它可以調用最合適的基類構造函數(如果需要,可以再次填入省略的參數以調用其最參數化的形式) –
@ Damien_The_Unbeliever,從來沒有想過相反的事實,因爲實際的傳入對象比簡單的「對象」更復雜,但會研究它。謝謝。 – DRapp
@nawfal,對於已經選擇瞭解決方案的問題,請不要試圖將意見反饋給重複項......在我看來,這只是浪費。 – DRapp