C# 是否有方法强制在Reference.cs中为wsdl中的非复杂类型字段生成*指定属性
是否有一种方法可以实际强制生成为字符串或整数等非复杂类型指定的字符串 我正在使用的Web服务将所有记录字段定义为nillable,minOccurs=0C# 是否有方法强制在Reference.cs中为wsdl中的非复杂类型字段生成*指定属性,c#,wsdl,xml-serialization,C#,Wsdl,Xml Serialization,是否有一种方法可以实际强制生成为字符串或整数等非复杂类型指定的字符串 我正在使用的Web服务将所有记录字段定义为nillable,minOccurs=0 <xsd:complexType name="Constituent"> <xsd:complexContent mixed="false"> <xsd:extension base="tns:Record"> <xsd:seque
<xsd:complexType name="Constituent">
<xsd:complexContent mixed="false">
<xsd:extension base="tns:Record">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="ConsId" nillable="true" type="xsd:nonNegativeInteger" />
<xsd:element minOccurs="0" maxOccurs="1" name="SiteId" nillable="true" type="xsd:nonNegativeInteger" />
<xsd:element minOccurs="0" maxOccurs="1" name="PredupStatus" nillable="true" type="xsd:string" />
它还指定了以记录作为参数的更新方法:
<xsd:element name="Update">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="PartitionId" nillable="true" type="xsd:nonNegativeInteger" />
<xsd:element minOccurs="0" maxOccurs="1" name="Force" nillable="true" type="xsd:boolean" />
<xsd:element minOccurs="1" maxOccurs="unbounded" name="Record" type="ens:Record" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
成分记录有近200个元素,可以为空。
同时,服务器端的更新方法被编程为忽略所有空值(如果更新请求中有10个以上的空值)
从文件生成的Reference.cs不包含*字符串或整数的指定属性
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.3062.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="urn:object.soap.convio.com")]
public partial class Constituent : Record {
private string consIdField;
private string siteIdField;
private string predupStatusField;
private System.Nullable<AdministratorStatus> adminStatusField;
private bool adminStatusFieldSpecified;
//
[System.CodeDom.Compiler.GeneratedCodeAttribute(“System.Xml”,“4.7.3062.0”)]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(“代码”)]
[System.Xml.Serialization.XmlTypeAttribute(Namespace=“urn:object.soap.convio.com”)]
公共部分类选民:记录{
私有字符串字段;
私有字符串siteifield;
私有字符串predupStatusField;
私有系统。可为空的adminStatusField;
指定的专用布尔管理员状态字段;
这会导致XmlSerializer为每个字段生成行:
<q1:ConsId xsi:nil="true"/>
<q1:SiteId xsi:nil="true"/>
<q1:PredupStatus xsi:nil="true"/>
<q1:AdminStatus xsi:nil="true"/>
<q1:ConsName><q1:Title xsi:nil="true"/>
<q1:FirstName>234234</q1:FirstName>
<q1:MiddleName xsi:nil="true"/>
<q1:LastName>412341234</q1:LastName>
234234
412341234
在我尝试清空一个字段之前,这一切都很正常。此时,我尝试清空的字段将被发送为null,并且被服务器忽略,因为请求中有10多个null字段。为了能够从序列化中删除不需要的null行,我需要所有字段都具有*指定的属性并在请求中发送只有我想要为空的字段。我可以手动添加它们,但我需要记住将它们保存到其他地方,以避免在刷新服务引用时被删除
或者,是否有方法在Reference.cs中强制生成ShouldSerialize属性