我的問題是如果我在Class A
中沒有默認構造函數(它是基類,並且具有其他類2或3個非默認構造函數),我如何運行Class B
中的非默認構造函數,該構造函數源自Class A
。爲什麼默認C#類(由Microsoft編寫)不遵循與編碼器編寫的類相同的C#規則
但我已經看到這不適用於默認的C#類,我正在使用asp.net mvc中的值提供程序,並且遇到了一個名爲FormValueProvider
的類,它從它的基類NameValueCollectionValueProvider
派生。
FormValueProvider
只有一個構造函數,它具有ControllerContext類型的參數。 而且它的基類NameValueCollectionValueProvider
有兩個構造一個分別NameValueCollection
類型和CultureInfo
的兩個參數和其他一個有三個參數其中兩個是NameValueCollection
類型,第三是輸入CultureInfo.
我如何可以實例FormValueProvider
類它是唯一的參數化構造函數 NameValueCollectionValueProvider
沒有默認構造函數。爲什麼這個規則適用於編寫他自己的代碼的程序員,而這些代碼不適用於Microsoft編寫的默認C#類。
確定嗎?你知道你可以從派生類的任何構造函數調用基類的任何構造函數嗎?最有可能的是派生類的構造函數只是這樣做的 - 鏈接構建調用 – Charleh
MVC是開源的,所以我建議你看看它在做什麼。你的描述並沒有表明它做了什麼特別的事情,它要麼使用默認屬性來調用它的基類構造函數,要麼從'ControllerContext'中調用它的基類構造函數,或者調用一個內部構造函數,這些構造函數在程序集外部不可見。 – Lee
對默認構造函數沒有要求。我很少有服務類的默認構造函數。 – user2864740