gpt4 book ai didi

entity-framework - DataContractSerializer:如何序列化没有 DataContract/DataMember 属性的类/成员

转载 作者:行者123 更新时间:2023-12-04 04:20:10 25 4
gpt4 key购买 nike

DataContractSerializer要求用 DataContract 标记类和成员和 DataMember属性。但是,在我的情况下,这些类是使用 EFPocoAdapater 框架自动生成的,并且这些属性不存在。

在不存在这些属性的情况下,如何使用 DataContractSerializer 强制对所有成员进行序列化?

From Alexdej:

This changed in 3.5SP1, hope you saw that: http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/13/50934.aspx

最佳答案

你不能——简单明了。 DataContractSerializer 需要该属性来获取要序列化的元素。与基本上只是序列化所有内容的 XmlSerializer 不同(除非您明确告诉它忽略它),DataContractSerializer 是“选择加入”的 - 您必须明确告诉它(通过属性)哪些字段和/或属性序列化。

更新:正如一些人指出的那样,在 .NET 3.5 SP1 中,Microsoft 稍微放宽了这些规则 - 任何公共(public)读/写属性都将由 DataContractSerializer 自动序列化。同时,你的类还需要有一个无参数的默认构造函数——听起来就像我们在很久以前对 XmlSerializer 的确切要求......

当然,这个:

  • 不允许你序列化私有(private)的东西——如果你想序列化它,你必须将它公开为公共(public)读/写属性
  • 不允许您指定参数的定义选择顺序 - 它只会按照它们出现在类
  • 中的顺序使用它们
  • 现在要求你在你的类中再次有一个无参数的构造函数以进行反序列化

  • 我仍然认为这些东西应该是明确和清晰的,让那些不再需要的东西为懒惰/草率的编程开辟了道路——我不喜欢它。但是,如果您愿意,您现在可以使用它,而无需使用 [DataMember] 显式标记您的属性.....

    马克

    关于entity-framework - DataContractSerializer:如何序列化没有 DataContract/DataMember 属性的类/成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/784562/

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