为什么序列化 DataContract 时不能使用 lambda?

发布于 2024-09-27 15:08:54 字数 567 浏览 4 评论 0原文

下面制作了一些模拟代码来说明我的示例。问题在于 lambda 表达式。如果我将其保留为代码示例中的样子,那么当我尝试调用该服务时,它将不会序列化。 但是如果我在 lambda 后面输入 .ToList() ,它会按预期进行序列化。

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

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

Made som mock code below to illustrate my example. The problem is the lambda expression. If I leave it as in the code example it will not serialize when I try to call the service. However if I type .ToList() after the lambda it serializes as it should.

Why is that? I can't see why the code below should not work...
Anyone care to enlighten me? :)

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

泪眸﹌ 2024-10-04 15:08:54

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

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

That's because of the deferred execution. You're not storing the result of the lambda execution, but rather the expression tree or lambda itself, which would need to serialize a reference (!) to the modelPerson.

http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx and many more show the "problems" associated with this. (Google for "deferred execution .net" for more.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文