6

生成されたxsdにminOccurs="0"ではなくminOccurs="1"が含まれるように、必要に応じてWCFでOperationContractメソッドのパラメーターを指定するにはどうすればよいでしょうか。

例:

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

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

しかし、xsdファイルで手動で修正する必要なしに、コード内でminOccurs="1"を定義したいと思います。

4

2 に答える 2

9

パラメータをクラスでラップする必要がある場合は、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; }
}
于 2010-08-04T14:49:17.663 に答える
3

この実装は私にとって素晴らしいものです:http: //thorarin.net/blog/post/2010/08/08/Controlling-WSDL-minOccurs-with-WCF.aspx

于 2015-03-16T15:29:35.543 に答える