我在模型中有一个 Person 类,并希望将其 15 个属性分配给视图中的标签。视图不应访问模型。这意味着控制器将处理创建人。View 是如何从 Controller 中获取这些 Person 属性的呢?如果 Controller 包含 Type Person 的成员,则 View 可以执行以下操作:
lblFirstName.Text = theController.Person.FirstName;
lblLastName.Text = theController.Person.LastName;
lblCity.Text = theController.Person.City;
但是,View 仍然是直接访问 Model(即 Person)。Controller 可以有自己的 Person 类,将 Model 的所有 Person 属性复制到其中,并具有上面的 View 使用语法。但这种设计有很多重复之处。有什么建议么?
顺便说一句,这是一个winform。该模型也是一个单独的项目/DLL。什么是 DTO?
Model 中的 Person 属性有特殊的逻辑,我不希望 View 遇到问题。例如,视图可能会:
字符串 fn = myController.Firstname;
并且由于 FirstName 属性中的逻辑而引发异常。因此,Person 对象的 Controller 轻量级(重复)版本不会有任何这些问题,因为它的属性只是字符串。
另请注意,您的 View 将需要对 Model 的引用来处理来自 Controller 的隐藏 Person 属性。我不喜欢它。