-1

所以我正在以模型-视图-控制器模式创建一个 C#/Winforms 应用程序。我的视图控制器需要实例化多组对象。对象组是模型的元素和视图的元素。因此,例如一个文本框和该文本框后面的模型。

我想知道最好的方法是否是将所有东西放在某种集合中并用钥匙将它们绑在一起?

4

3 回答 3

3

在我构建的 WinForm MVC 应用程序中,我通常不允许控制器实例化任何东西(我尝试将“new”关键字保留在我的控制器之外)。

如果我需要一个对象,我会向服务请求它,并且在内部该服务将从数据源(存储库等)中获取该对象,或者在新对象的情况下,它可能会利用某种工厂来给我一个新对象(任何必要的预填充属性都已设置为默认值、运行规则等)。

我喜欢思考这类问题的方式是:如果我没有用于视图的 GUI,而是有用于视图的命令行输入,我将如何使这项工作(并使其可重用)?创建/添加/删除/更新模型的逻辑应该在您的域中的某个地方,而不是在控制器中。然后控制器就成为模型和视图之间的中介。视图变成了一种 I/O 机制,它只是一个更漂亮的命令行界面版本。

希望这是有道理的。

于 2009-03-03T22:54:50.863 回答
0

您是否考虑过使用 WPF 而不是 WinForms?它有一个更好的类似 MVC 的模型和更强大的内置数据绑定。它可能会解决您的问题并帮助您使用更现代的技术进行构建。

于 2009-03-03T18:48:20.113 回答
0

也许你应该设计你的模型来匹配视图的需要?那么控制器将只有一个模型传递给视图。

于 2009-03-05T00:25:14.473 回答