2011-01-10 32 views
0

以我WCF服務我有方法與「INT」參數:WCF + WebService的:2場中產生代表1個整數

[OperationContract] 
    PublishResult PublishEnrollmentProfile(
     string siteName, int methodId,... 
     ); 

當我創建的WebService參照生成以下簽名此WCF服務:你可以看到,而不是一個整數參數我有2:整數(值)和布爾(對於標記'如果指定值)。

可以嗎?爲什麼我需要第二個參數(布爾)?

非常感謝!

+0

請參閱http://stackoverflow.com/questions/2284760/what-are-these-extra-parameters-in-my-asmx-proxy-methods。這是正常的和預期的。 – 2011-01-11 03:42:08

回答

3

指定」字段只在那些結構可選參數生成。(INT,日期時間,小數等)。所有這些變量將與指定的名稱生成的附加變量。

由於‘指定’字段是隻在可選參數上生成,如果您將PublishEnrollmentProfile方法的參數放置在DataContract中並將MethodID上的DataMember屬性設置爲[DataMember(IsRequired = true)],則指定的字段應該消失,除非這是可選字段如果你想離開它,它會是怎樣的。

這裏是blog posting與一些樣品

UPDATE

所以你有你的運營合同。

[OperationContract] 
PublishResult PublishEnrollmentProfile(string siteName, int methodId,...); 

如果該方法的參數是不可選的,那麼你應該創建一個DataContract並重新定義OperationContract的,像這樣:

{ 
    [OperationContract] 
    PublishResult PublishEnrollmentProfile(PublishEnrollmentProfileRequest request); 
} 

然後你有你的DataContract這樣。

[DataContract] 
public class PublishEnrollmentProfileRequest 
{ 
    private string _siteName; 
    [DataMember] 
    public string siteName 
    { 
     get; 
     set; 
    } 


    private int _methodId; 
    [DataMember(IsRequired=True)] 
    public int methodId 
    { 
     get; 
     set; 
    } 

    . 
    . 
    . 

} 

因此,您有一個「請求」對象,您傳遞到具有字段siteName和methodId的WCF服務。在我提供的methodId的示例中,這將消除「指定」字段。

+0

對不起,但我正在談論方法本身的參數。它是否也需要額外的屬性? – Budda 2011-01-10 21:09:38