Question

Je me demande comment je peux spécifier un paramètre d'une méthode d'OperationContract dans WCF comme requis de sorte que le XSD généré contient minOccurs = « 1 » au lieu de minOccurs = « 0 ».

Exemple:

[ServiceContract(Namespace = "http://myUrl.com")]  
public interface IMyWebService  
{  
   [OperationContract]  
   string DoSomething(string param1, string param2, string param3);  
}

génère cette xsd:

<xs:element name="DoSomething">  
  <xs:complexType>  
    <xs:sequence>  
      <xs:element minOccurs="0" name="param1" nillable="true" type="xs:string" />  
      <xs:element minOccurs="0" name="param2" nillable="true" type="xs:string" />  
      <xs:element minOccurs="0" name="param3" nillable="true" type="xs:string" />  
    </xs:sequence>  
  </xs:complexType>  

Mais je veux définir minOccurs = « 1 » dans le code sans qu'il soit nécessaire de fixer manuellement dans le fichier XSD.

Était-ce utile?

La solution

Vous devrez peut-être pour envelopper vos paramètres dans une classe, vous pouvez utiliser l'attribut DataMember et spécifiez IsRequired=true:

[ServiceContract(Namespace = "http://myUrl.com")]  
public interface IMyWebService  
{  
   [OperationContract]  
   string DoSomething(RequestMessage request);  
}

[DataContract]
public class RequestMessage
{
   [DataMember(IsRequired = true)]
   public string param1 { get; set; }

   [DataMember(IsRequired = true)]
   public string param3 { get; set; }

   [DataMember(IsRequired = true)]
   public string param3 { get; set; }
}

Autres conseils

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top