【问题标题】:How to avoid Generic DTO objects in .NET MVC, Is there a ExpandoObject solution?如何避免 .NET MVC 中的通用 DTO 对象,是否有 ExpandoObject 解决方案?
【发布时间】:2013-03-12 22:38:07
【问题描述】:

我正在使用 GenericDTO 对象在我的方法之间传递信息。通常它包括一个真/假值、一个错误列表(如果有),也许还有其他一些杂项。

GenericDTO 对象具有一些通用属性,例如"string1","string2","boolean1","boolean2"。

这并不理想。 (但我不想要数百万个 DTO 类型,只是为了在方法之间传递)。

有什么更好的方法来做到这一点?我想传回一个对象。有没有办法使用动态 ASP.NET MVC 对象(如 ViewBag )将它们用作 DTO 对象?当然,没有编译时检查......但最好避免通用对象场景。

【问题讨论】:

  • “数百万”个 DTO?如果需要数百万个不同的对象,我认为您的设计存在根本性错误。听起来您只想序列化数据并反序列化它。实际上,这听起来更像是一个 XY 问题 (meta.stackexchange.com/questions/66377/what-is-the-xy-problem),您已经说服自己必须使用一个糟糕的解决方案,而实际上您应该询问您想要实现的目标。您的问题不是“我如何避免 DTO 对象”,而是“在这种情况下,我如何将数据从一个对象传递到另一个对象
  • 我建议您提出一个新问题来定义您要解决的实际问题,并寻求帮助。不寻求帮助解决您想出的问题的糟糕解决方案。

标签: c# asp.net-mvc oop


【解决方案1】:

一个常见的模式是拥有一个带有从字符串到对象的字典的对象。字典充当任何东西的包,将列映射到值。由于使用 DataContractSerializer 可以很好地序列化字典,因此这是 dto 的合理替代方案。

但是,我担心您的“方法之间传递信息”,因为这不是 DTO 的用途。

【讨论】:

  • 是的,我将 DTO 用于站点中的许多应用程序、ajax 等,但一直在方法之间使用它们。如果想从一个方法返回多个项目,通常的方法是什么?
  • 通常你创建一个具有所需属性的类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2013-10-01
  • 2010-12-01
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 2018-09-04
相关资源
最近更新 更多