2012-10-11 36 views
7

Uso [DataMember(IsRequired=true)] para hacer que las propiedades de DataContract sean necesarias. No parece haber algunos IsRequired para los parámetros de OperationContract. ¿Cómo los hago necesarios y no permiten nulos?WCF: ¿hay algún atributo para hacer que los parámetros en OperationContract sean necesarios?

El parámetro en OperationContract parece ser opcional en la herramienta SoapUI. Aunque esto nunca debe ser opcional o nulo.

WCF Interfaz:

[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 plantilla de solicitud:

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

Respuesta

1

No. Al igual que cualquier método regular, que tendrá que comprobar si los parámetros de tipo de referencia tienen un valor o son null.

Basta con aplicar sus patrones de programación defensivas normales, comprobando los tipos de referencia antes de acceder a sus propiedades.

+0

verdadera. Espera siempre lo inesperado. – Dieko

Cuestiones relacionadas