7

问题是,如标题所示,MVC 模型绑定器是否允许视图模型对象的私有构造函数。显然它没有,MissingMethodException: No parameterless constructor defined for this object.即使有一个私有的无参数构造函数。如果不允许私有构造函数,是否有架构解决方法?

这样的构造函数可能有助于确保只有模型绑定器可以创建 ViewModel 对象,其字段可能不会被一致地填充 - 在代码的其他部分中不会有一些字段被忘记完成。

在类似的情况下,实体框架可以使用私有构造函数和私有属性。

4

2 回答 2

16

不,不是的。

如果要阻止实际代码调用该构造函数,可以添加[Obsolete("For model binding only", true)]到公共构造函数。如果显式调用构造函数,这将导致编译器错误。

于 2012-08-31T16:35:37.357 回答
1

您始终可以编写一个支持私有/受保护 ctor 的自定义模型绑定器。

于 2012-08-31T16:37:38.693 回答