Asp.net-Mvc

ASP.NET MVC 是否允許私有 ViewModel 建構子?

  • May 15, 2019

問題是,如標題所示,MVC 模型綁定器是否允許視圖模型對象的私有建構子。顯然它沒有,MissingMethodException: No parameterless constructor defined for this object.即使有一個私有的無參數建構子。如果不允許私有建構子,是否有架構解決方法?

這樣的建構子可能有助於確保只有模型綁定器才能創建其欄位可能不會始終被填充的 ViewModel 對象 - 在程式碼的其他部分中,不會忘記完成某些欄位。

在類似的情況下,實體框架可以使用私有建構子和私有屬性。

不,不是的。

如果要阻止實際程式碼呼叫該建構子,可以添加[Obsolete("For model binding only", true)]到公共建構子。如果顯式呼叫建構子,這將導致編譯器錯誤。

您始終可以編寫一個支持私有/受保護 ctor 的自定義模型綁定器。

引用自:https://stackoverflow.com/questions/12219305