【问题标题】:Mapping data <-> forms in C#?在 C# 中映射数据 <-> 表单?
【发布时间】:2011-07-23 04:45:11
【问题描述】:

我见过的很多特定的 C# WinForms 应用程序都是在数据和表单之间进行简单映射并再次返回的代码。当然,必须有更好的方法。进行此类映射的最佳工具是什么?

目标:

  • 工业实力、可靠、经过测试、广泛的用户群
  • 最好是开源的
  • 基于约定的简单地图的最少代码
  • 可针对更复杂的地图进行配置
  • 对于我想完全手动完成的情况,请避开
  • 简单案例的简单学习曲线(即 80% 的使用率)

并不是说我一定会期待满足所有这些要求的东西。

如果您告诉我您对您推荐的任何工具的体验、好恶,可加分。

【问题讨论】:

    标签: c# .net winforms data-binding mapping


    【解决方案1】:

    看看AutoMapper

    AutoMapper 使用流畅的配置 API 来定义对象-对象映射策略。 AutoMapper 使用基于约定的匹配算法将源值与目标值匹配。目前,AutoMapper 面向模型投影场景,将复杂对象模型展平为 DTO 和其他简单对象,其设计更适合序列化、通信、消息传递,或者只是域和应用层之间的防损坏层。

    【讨论】:

    • Automapper 只是将一个对象中的字段连接到另一个对象中的字段。 AFAIK 它无法识别 Winforms 控件,因此您仍然需要编写胶水代码来将 Winform 控件连接到某种 ViewData 或 DTO 对象。
    【解决方案2】:

    我个人使用AutoMapper 在我的域模型(由服务层使用)和我的视图模型(由 UI 层使用)之间来回映射。这是我在大规模生产应用程序中一直使用的工具,没有任何问题。

    【讨论】:

    • 所以您仍然需要胶水代码来将您的 ViewModel 对象连接到您的 winform 控件,对吗?
    • @Robert Harvey,不,我在 WPF 中使用 MVP pattern in WinForms 和 MVVM,所以我的控件直接绑定到视图模型,不需要胶水:-)
    • @Darin @Robert 这正是我所关心的——AutoMapper 是在字段方面,而不是 Winforms 控件。 @Darin,您能否详细说明如何使用 MVP 自动绑定控件而无需胶水?
    • @SRobertJames:看看达林评论中的链接。那里提供的示例应该向您展示如何使用 MVP 将控件直接数据绑定到 ViewModel/Presenter 对象。从那里,您可以使用 Automapper 将该对象的字段绑定到您自己的数据域对象。
    • Jeremy Miller's "Build your own CAB" series 显然非常好;我打算自己看他的系列。
    猜你喜欢
    • 1970-01-01
    • 2015-01-04
    • 2017-09-17
    • 1970-01-01
    • 2015-02-27
    • 2010-11-04
    • 1970-01-01
    • 2018-10-09
    • 2021-09-13
    相关资源
    最近更新 更多