Comment spécifier un paramètre d'un OperationContract tel que requis
-
25-09-2019 - |
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.
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
Cette mise en œuvre est bien pour moi: http://thorarin.net/blog /post/2010/08/08/Controlling-WSDL-minOccurs-with-WCF.aspx
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow