2012-10-11 20 views
7

DataContract özelliklerini kullanmak için [DataMember(IsRequired=true)] kullanıyorum. OperationContract parametreleri için bazı IsRequired görünmüyor. Onları nasıl gerekli kılar ve null izin vermez?WCF: OperationContract'ta gerekli parametreleri yapmak için bir özellik var mı?

OperationContract parametresinin, SoapUI aracında isteğe bağlı olduğu anlaşılıyor. Bu asla isteğe bağlı veya boş olmamalıdır.

WCF Arayüzü:

[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 istek şablonu: Sadece herhangi bir normal yöntemle gibi

<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> 

cevap

1

sayılı, referans türü parametreleri bir değere sahip olup olmadığını kontrol etmek gerekir veya null.

Normal savunma programlama modellerinizi uygulamanız, özelliklerine erişmeden önce referans türlerini kontrol etmeniz yeterlidir.

+0

Doğru. Beklenmedik her zaman beklerim. – Dieko

İlgili konular