我发现 [DataContract]
和 [DataMember]
属性有点乱,我宁愿用配置方法或其他东西中的代码来做这件事。这可能吗?
最佳答案
您根本不必使用这些属性。 DataContractSerializer
将使用 getter 和 setter 序列化所有公共(public)属性,但在序列化具有导航属性的实体的情况下,由于“循环引用”,您很容易以异常结束。
为避免该异常,您必须在您的实体类上使用 [DataContract(IsReference = true)]
并在每个要序列化的属性上使用 DataMember
或 在您不想序列化的每个属性上忽略数据成员
。
最后也是最复杂的选择是完全避免属性和自定义类实现 IDataContractSurrogate
以控制类型之外的序列化。
您还可以编写完全自定义的序列化过程或使用 XML 序列化或二进制序列化及其所有要求。
关于c# - 设置没有所有属性的 DataContract 和 DataMember,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264748/