问题是,如标题所示,MVC模型绑定器是否允许视图模型对象的私有构造函数。显然它没有,即使有一个私有的无参数构造函数,也说MissingMethodException: No parameterless constructor defined for this object.
。
如果没有允许私有构造函数,是否有一个arhitectural变通方法?
这样的构造函数可能有助于确保只有模型绑定器可以创建其字段可能无法一致填充的ViewModel对象 - 在代码的其他部分中不可能忘记完成某些字段。
实体框架,在类似的情况下,可以使用私有构造函数和私有属性。
答案 0 :(得分:14)
不,它没有。
如果要阻止实际代码调用该构造函数,可以将[Obsolete("For model binding only", true)]
添加到公共构造函数中。如果显式调用构造函数,这将导致编译器错误。
答案 1 :(得分:1)
您始终可以编写支持私有/受保护的ctors的自定义模型绑定器。