【问题标题】:Why cant I use lambda when serializing DataContract?为什么我在序列化 DataContract 时不能使用 lambda?
【发布时间】:2010-10-11 16:30:43
【问题描述】:

在下面制作了一些模拟代码来说明我的示例。问题是 lambda 表达式。如果我在代码示例中保留它,当我尝试调用服务时它不会序列化。 但是如果我在 lambda 之后键入 .ToList(),它会按应有的方式序列化。

这是为什么呢?我不明白为什么下面的代码不应该工作...... 有人愿意开导我吗? :)

var list = new EntityPerson
               {
                   Names = modelPerson.Names.Select(
                                     n => new EntityName
                                              {
                                                   Text = n.Text
                                              })
                }

【问题讨论】:

  • 如果您描述所涉及的类是如何声明的,将会有所帮助。 “不会序列化”到底是什么意思?

标签: c# lambda datacontract


【解决方案1】:

这是因为延迟执行。您存储的不是 lambda 执行的结果,而是表达式树或 lambda 本身,它们需要序列化对 modelPerson 的引用 (!)。

http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx 和更多显示与此相关的“问题”。 (谷歌“延迟执行.net”了解更多。)

【讨论】:

  • 是的,我知道这一点,但仍然认为它会在序列化之前运行查询...感谢您的快速响应
猜你喜欢
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2015-05-11
  • 2014-08-11
  • 2011-02-27
相关资源
最近更新 更多