我有这个问题。我用这种方法有WCF .Net C#web服务:
public interface IMyService
{
// TODO: Add your service operations here
[OperationContract]
ListOfRequests GetListOfRequests(string par1,
string par2,
string par3,
DateTime par4,
DateTime par5,
string par6,
string par7);
}
public class MyService : IMyService
{
public ListOfRequests GetListOfRequests(string par1,
string par2,
string par3,
DateTime par4,
DateTime par5,
string par6,
string par7)
{
// .... web method code here;
}
}
问题在于,当我生成Web服务时,wsdl架构会返回:
<xs:element name="GetListOfRequests">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="par1" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="par2" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="par3" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="par4" type="xs:dateTime" />
<xs:element minOccurs="0" name="par5" type="xs:dateTime" />
<xs:element minOccurs="0" name="par6" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="par7" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
我希望我的参数不是这样的:
<xs:element name="GetListOfRequests">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" name="par1" nillable="false" type="xs:string" />
<xs:element minOccurs="1" name="par2" nillable="false" type="xs:string" />
<xs:element minOccurs="1" name="par3" nillable="false" type="xs:string" />
<xs:element minOccurs="1" name="par4" type="xs:dateTime" />
<xs:element minOccurs="1" name="par5" type="xs:dateTime" />
<xs:element minOccurs="1" name="par6" nillable="false" type="xs:string" />
<xs:element minOccurs="0" name="par7" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
如何实现参数的serizalize?预先感谢您的帮助。 问候, 的Georgi
答案 0 :(得分:0)
您可以删除
nillable="true"
带
[DataContract]
public class ListOfRequests
{
DataMember(EmitDefaultValue=false)]
public string ListOfRequestsMember;
// ...
}
这里的问题是string类型的默认值为null。因此,将此属性设置为false时,如果将数据设置为其默认值
,则会忽略该数据在.NET Framework中,类型有一个 默认值的概念。对于 例如,对于任何引用类型 默认值为null,对于 整数类型它是0.它是 偶尔需要省略数据 成员来自序列化数据时 它被设置为默认值。去做 这个,设置EmitDefaultValue 属性为假(这是真的 默认值)。