gpt4 book ai didi

c# - WCF 休息 : ReadAsDataContract using classes "WITHOUT" decoration attributes DataContract and DataMember

转载 作者:行者123 更新时间:2023-11-30 21:19:00 30 4
gpt4 key购买 nike

我刚刚做了一些测试,我设法让 ReadAsDataContract 在 Response.Content 方法上工作......

真正令人困惑的是我认为它还不能工作!因为我的类没有用 DataContact 或 DataMember 属性修饰。

我很困惑,阅读网络上的各种教程似乎很重要用 DataContract 和 DataMember 属性装饰你的类(用于 ReadAsDataContract)..

但我的不是,我在调用 ReadAsDataContract 的行上放置了一个断点,果然我返回了一个包含正确详细信息的 LIST。这是行

List<Models.Question> questions = response.Content.ReadAsDataContract<List<Models.Question>>();

Models.Question 没有用属性修饰。我与我的服务器和客户端共享我的模型组件。

有人能告诉我为什么它可以工作吗,据我所知你需要在类和成员上添加属性(我没有)

我正在使用 Visual Studio 2010 和 .NET 4 - 嗯,我似乎记得不再需要这些属性 - 这是真的吗??

真的很期待任何帮助。

我讨厌当事情起作用但它们不应该 :-) 但当然我也讨厌当它们不起作用时它们应该 :-)

谢谢!

最佳答案

Can somebody tell me why it works when as far as i know you need to add the attributes on the class and members (which i have not)

对于全世界的程序员来说,将 [DataContract] 放在数据类上并将 [DataMember] 放在要序列化的每个成员上的“负担”似乎太大了 - 因此 Microsoft 更改了 .NET 3.5 SP1 中 DataContractSerializer 的行为。

从那时起,DCS 将像旧的 XmlSerializer 一样使用未修饰的类 - 它会愉快地序列化所有公共(public)成员和属性。

当然,这样做的问题是:您失去了属性为您提供的所有额外控制,例如为您的数据契约定义 XML namespace 、定义数据成员的顺序等 - 但它在不添加任何属性的情况下工作.

因此,这是一种已知且自愿引入的行为。我仍然相信你应该明确你的意图,并用 [DataContract] 标记你的数据类,用 [DataMember] 标记你的成员(这也使你能够忽略一个或多个公共(public)成员,并且不将它们包含在序列化中)。

关于c# - WCF 休息 : ReadAsDataContract using classes "WITHOUT" decoration attributes DataContract and DataMember,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3973160/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com