当前位置: 首页 > 编程语言 > C#

Serializable和DataContract(没有?)分享

时间:2023-04-10 15:31:44 C#

Serializable和DataContract(没有?)我在看一个新项目的一些代码,发现一个以前的开发者在使用Serializable和DataContract。[Serializable]和[DataContract(Namespace="Some.Name.Space",IsReference=true)]我假设当存在DataContract属性时,WCF将忽略Serializable。这是一个正确的假设吗?如果不是,使用两者的好处是什么?是的,如果[DataContract]存在,[Serializable]将被忽略。这可能很有用,例如创建一个类型,该类型将有一个WCF序列化投影和另一个.NETRemoting投影(如果它出于遗留原因与WCF一起工作)。更新:我刚刚在自己的代码中遇到了需要[DataContract]和[Serializable]的情况。假设您有一个带有publicintFoo{get;set;}您希望在ASP.NETViewState和ASP.NETWebAPIJSON端点中拥有的自动生成的属性(例如publicintFoo{get;set;})(使用这些属性在NewtonsoftJSONSerializer或DataContractSerializer中使用).要使ViewState正常工作,您需要将类设置为[Serializable]。然而,这会破坏JSON序列化,导致JSON像{"_k_BackingField123":456}而不是{"Foo":456},因为在[Serializable]模型中,自动生成的属性支持字段将被序列化而不是属性本身。但是,如果您还将[DataContract]添加到类型(并将[DataMember]添加到其属性),则ViewState和JSON方案都可以正常工作。以上就是C#学习教程分享的全部内容:Serializable和DataContract(不是吗?)。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: