2012-10-11 33 views
7

我使用[DataMember(IsRequired=true)]來製作所需的DataContract屬性。 OperationContract參數似乎沒有一些IsRequired。我如何讓他們需要,不允許空?WCF:是否有一個屬性可以使OperationContract中的參數成爲必需?

OperationContract中的參數在SoapUI工具中似乎是可選的。儘管這絕不能是可選的或爲空的。

WCF接口:

[OperationContract] 
IsClientUpdateRequiredResult IsClientUpdateRequired(IsClientUpdateRequiredInput versie); 

... 

[DataContract] 
public class IsClientUpdateRequiredInput 
{ 
    [DataMember(IsRequired=true)] 
    public string clientName { get; set; } 
    [DataMember(IsRequired = true, Order = 0)] 
    public int major { get; set; } 
    [DataMember(IsRequired = true, Order = 1)] 
    public int minor { get; set; } 
    [DataMember(IsRequired = true, Order = 2)] 
    public int build { get; set; } 
    [DataMember(IsRequired = true, Order = 3)] 
    public int revision { get; set; } 
} 

的soapUI請求模板:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" xmlns:pir="http://schemas.datacontract.org/2004/07/PirIS.Web.WCF.InputClasses"> 
    <soap:Header/> 
    <soap:Body> 
     <tem:IsClientUpdateRequired> 
     <!--Optional:--> 
     <tem:versie> 
      <pir:clientName>?</pir:clientName> 
      <pir:major>?</pir:major> 
      <pir:minor>?</pir:minor> 
      <pir:build>?</pir:build> 
      <pir:revision>?</pir:revision> 
     </tem:versie> 
     </tem:IsClientUpdateRequired> 
    </soap:Body> 
</soap:Envelope> 

回答

1

號就像任何普通的方法,你需要檢查引用類型參數是否有一個值或者是null

只需應用您的正常防禦性編程模式,在訪問其屬性前檢查引用類型。

+0

是。總是期待意外。 – Dieko

相關問題