如何根据需要指定OperationContract的参数

我想知道如何根据需要在WCF中指定OperationContract方法的参数,以便生成的xsd包含minOccurs =“1”而不是minOccurs =“0”。

例:

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

生成这个xsd:

         

但我想在代码中定义minOccurs =“1”而无需在xsd文件中手动修复它。

您可能需要将参数包装在类中,然后可以使用DataMember属性并指定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; } } 

这个实现对我很好: http : //thorarin.net/blog/post/2010/08/08/Controlling-WSDL-minOccurs-with-WCF.aspx