DataMember IsRequired属性
1.简介
在数据契约中,如果需要序列化时,则需要传入指定IsRequired属性:
摘要: 获取或设置一个值,该值用于指示序列化引擎在读取或反序列化时成员必须存在。
public bool IsRequired { get; set; } |
如:消息发送代码
- [DataContract]
- public class MessageSendReturnDto
- {
- [DataMember(IsRequired = true)]
- public int ID { get; set; }
- [DataMember(IsRequired = true)]
- public MessageSendStatus Status { get; set; }
- [DataMember(IsRequired = true)]
- public MessageSendType ReturnType { get; set; }
- [DataMember(IsRequired = true)]
- public DateTime SendDateTime { get; set; }
- [DataMember(IsRequired = true)]
- public int SendTimes { get; set; }
- [DataMember]
- public string ErrorMessage { get; set; }
- }
2.什么时候会用到序列化?(时机)
2.1显示地调用XML的序列化
- var xml = XmlHelper.SerializeXml<List<MessageSendReturnDto>>(messageSendReturnDtos.ToList());
2.2添加Web引用时对象传输
在调用WCF时,添加Web引用,当做一个WebService使用时,就需要指定非string类型为IsRequired,因为WS的传输是基于SOAP,使用XML方式。
生成的代码表明继承自WebService
- public partial class 某某某Service : System.Web.Services.Protocols.SoapHttpClientProtocol
事实上,在WebService中用实体传输的话,需要打上[Serializable]的标记。