我们使用了一个具有SaveCustomer功能的SOAP服务。如果在字段中指定了值,则SaveCustomer函数将使用下面列出的Customer对象,并更新更改。
今天我们发现,如果我们只想更新性别字段,就不应该发送其他任何字段,甚至不发送为null。基本上,我们必须避免序列化。 问题是,如果我们发送以下内容:
<Customer>
<customerIdField>1</customerIdField>
</emailField>
<genderField>5</genderField>
</Customer>
然后系统将删除电子邮件字段。我们如何在运行时轻松地指定对象的字段是否应包括在序列化中?我看过类似SOAPignore的东西,但是看起来非常脆弱并且使用起来很危险。例如,如果将新字段添加到对象怎么办?
同时,我们实际上必须能够将一个字段指定为null,以防实际需要从我们使用的系统中的客户中删除该字段。
[System.CodeDom.Compiler.GeneratedCodeAttribute("system.xml","4.8.3752.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepthroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[system.xml.Serialization.XmlTypeAttribute(Namespace="http://www.namespace.come/")]
public partial class Customer : CompanyEntity {
private string customerIdField;
private string firstNameField;
private string lastNameField;
private Address[] addressField;
private PhoneNumber[] phoneNumberListField;
private string emailField;
private EmailBounce emailBounceField;
private Gender genderField;
private string ssnField;
private bool controlStatusField;
private CustomerProperties propertiesField;
private CreditCheck creditCheckField;
private ClubProperties clubPropertiesField;
private CustomerConsent[] customerConsentField;
private SalesChannelInfo[] salesChannelInfoListField;