2009-10-20 24 views
0

我有這個問題。我有WCF的.Net C#Web服務使用這種方法:如何序列化Web Service方法中的參數

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> 

,我想我的參數是不null像這樣:

<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參數來實現這一目標?預先感謝您的幫助。 問候, 格奧爾基

回答

0

你可以在這裏刪除

nillable="true" 

[DataContract] 
public class ListOfRequests 
{ 
    DataMember(EmitDefaultValue=false)] 
    public string ListOfRequestsMember; 
    // ... 
} 

的問題是字符串類型的默認值爲null。因此,如果將此屬性設置爲false,則在將其設置爲其默認值時省略數據。

在.NET Framework中,類型具有默認值的 概念。對於 例如,對於任何參考鍵入 默認值是空值,和用於 整數類型爲0。這是 有時候需要時 它被設置爲它的默認值以從序列化的數據省略數據 構件。要做 這,請將EmitDefaultValue 屬性設置爲false(默認爲 )。

ref

+0

嗨, 相同的結果。可能是我必須更詳細地解釋我的應用程序。我用struct來定義類。 Struct有10個元素。我的web服務返回這個類的對象,這是我的方法。該方法將7個參數傳遞給我的數據庫中的過程。這個過程返回給這11個元素它們的值的數據集。所以這個類的成員是結構中的這11個元素(「包裝」),我可以很容易地進行搜索。問題是我無法序列化我的方法(返回此類的對象)返回的參數。 11個元素和8個參數在兩個diff xsd模式中。 – Georgi 2009-10-20 13:35:48

+0

正如我所說,這並沒有解決我的問題。 – Georgi 2009-10-21 06:27:26

相關問題