Jul*_*lin 53 .net wcf serialization
在wcf中,在DataMember属性上应用属性有 什么区别
private int m_SomeValue;
[DataMember]
public int SomeValue {
get {...}
set {...}
}
Run Code Online (Sandbox Code Playgroud)
而不是成员变量
[DataMember]
private int m_SomeValue;
public int SomeValue {
get {...}
set {...}
}
Run Code Online (Sandbox Code Playgroud)
?
dth*_*her 41
通常,您应该支持在属性上应用DataMember属性,而不是在私有字段上应用.将属性应用于字段的唯一原因是该属性是否为只读(即它没有setter).
Mar*_*ell 24
只要您使用Name标记,无论是使用字段还是属性,合同都是相同的.
[DataMember(Name="SomeValue")]
private int m_SomeValue;
Run Code Online (Sandbox Code Playgroud)
但是,访问私有成员可能存在一些权限问题,特别是在Silverlight和CF上 - 在这种情况下,我建议使用公共属性作为数据成员.实际上,除非我有充分的理由,否则我会倾向于总是使用房产......
小智 6
您可能希望将字段而不是属性标记为DataMember,这是有充分理由的.
请查看此更多详细信息:http://blog.walteralmeida.com/2010/05/wcf-and-datacontract-serialization-internals-and-tips-.html
顺便说一下:只有在完全信任环境中运行时, ContractSerializers才会序列化任何具有DataMemberAttribute的私有字段.不能部分信任(请查看上面列出的博客以获得解决方案)
| 归档时间: |
|
| 查看次数: |
40807 次 |
| 最近记录: |