2010-08-04 23 views
5

WCF'de bir OperationContract yönteminin parametresini nasıl belirtebileceğimi merak ediyorum. Böylece oluşturulan xsd minOccurs = "0" yerine minOccurs = "0" içeriyor.Gerektiğinde bir OperationContract parametresi nasıl belirtilir

Örnek:

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

bu xsd oluşturur:

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

Ama elle düzeltmek için gerek olmadan kodu içinde minOccurs = "1" tanımlamak istediğiniz xsd dosyası.

+0

http: // stackoverflow .com/questions/1438623/how-can-i-force-wcf-to-autogenerate-wsdls-ile-gerekli-method-parameters-minoc/3436039 # 3436039 – Freelancer

+0

Bkz. [burada] (http://stackoverflow.com/ sorular/1438623/nasıl-can-i-force-wcf-to-autogenerate-wsdls-gerekli-yöntem-parameters-minocc/3436039 # 3436039) Ben ince k daha iyi bir çözümdür. –

cevap

7

Daha sonra DataMember özelliğini kullanabilirsiniz ve belirtebilirsiniz, bir sınıfta Parametrelerinizi sarmak gerekebilir 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; } 
} 
+0

Bu, okumayı umduğum cevap değil, ama nasıl yapılması gerektiğini açıkça belirttiğiniz için teşekkür ederim. –

+5

Bu, oluşturulan xsd dosyasında minOccurs = "0" olarak işaretlenmiş OperationContract'ta 'request' argümanını oluşturmaz mı? – arathorn

+0

@arathorn Burada hiç bir yanıt almadığınızı görüyorum. Güçlü bir noktaya geliyorsun. Bence haklısın. WCF'de bir OperationContract parametre gereksiniminin uygulanması (okuduklarım kadarıyla) ileti sözleşmesi girmeden 'Nullable' türünde yapılamaz. İşte bulduğum bir bağlantı: http://social.msdn.microsoft.com/Forums/vstudio/en-US/e707ed20-c09c-4e26-927a-7c3071d74ed7/operationcontract-with-required-parameters?forum=wcf .. Bence senin noktasında haklısın. –

İlgili konular