Skip Navigation LinksYazgeliştir Forumları » WCF » WCF de Enum göndermek.
                        
Sayfa 1 / 1[3Cevap]
WCF de Enum göndermek.
Kullanıcı İçerik

keremakbal

 
WCF de Enum göndermek.
Gönderim Zamanı: 16-09-2012 00:23:25

keremakbal

Üyelik Zamanı: 16-01-2008 13:09:31

Gönderi: 80

Puan: 529

Merhaba arkadaşlar. 

WCF üzerinden işlemler yapacağımız bir proje geliştiriyoruz. Bir konuda takıldım ve yardıma ihtiyacım var.

Sorunum şöyle;WCF Web Servisi üzerinde DataContract olarak tanımlayıp, içerisinde 15 adet EnumMember'ı olan bir enum tanımlamak ve client projede şu şekilde kullanmak istiyorum.

* ServiceReference1.TestClient SVC = new ServiceReference1.TestClient();

* string GelenEnumdanBirDeger = SVC.PersonelEnum.ADSOYAD.ToString();

tabii ki 2. satırı çalıştıramadım çünkü WCF Servisten böyle bir enum döndüremiyorum.

Sadece string,int yada dizi olarak değer döndüren yordamlara ulaşabiliyorum ancak dediğim gibi direk olarak orada tanımlayıp içerisini doldurduğum enum'u client tarafına gönderemedim.

Bu konuda yardımlarınızı bekliyorum.

Teşekkür ederim.


Kerem AKBAL

1#

keremakbal

 
Ynt:WCF de Enum göndermek.
Gönderim Zamanı: 23-09-2012 01:18:45

keremakbal

Üyelik Zamanı: 16-01-2008 13:09:31

Gönderi: 80

Puan: 529

Sorunun cevabını bilen yok galiba.


Kerem AKBAL

2#

FreKanS

 
Ynt:WCF de Enum göndermek.
Gönderim Zamanı: 11-10-2013 23:40:52

FreKanS

Üyelik Zamanı: 13-02-2006 16:31:10

Gönderi: 78

Puan: 617

Sorunun cevabi kolay hocam...

Service Kontrat olarak aşağıdaki gibi ayarla bence.

 

 

    [ServiceContract]
    public interface IContract
    {
        [OperationContract]
        [XmlSerializerFormatAttribute(SupportFaults = true)]
        string IslemTuru(ServisTest.Islemler islem);
    }


Servisi yazarkende enum nesnesını oluşturalım. Ama bu enum nesnesinin [Serializable] attribute'u ile işaretledim... Gerekliliği konusunda emin değilim ancak işaretledim.

    public class ServisTest : IContract
    {
        public string IslemTuru(Islemler islem)
        {
            return islem.ToString();
        }

        [Serializable] //bu gerekmiyor olabilir.
        public enum Islemler
        {
            Islem1,
            Islem2,
            Islem3,
            Islem4
        }
    }

 


Bu servisin WSDL dosyasını çağırırsan http://localhost:3706/ServisTest.svc?Wsdl yani bu şekilde çağırırsan...

 

<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://localhost:3706/ServisTest.svc?xsd=xsd0" namespace="http://tempuri.org/"/>
</xsd:schema>
</wsdl:types>

 


satırı aslında sizin enumlarınızı içeriyor. Görmek için http://localhost:3706/ServisTest.svc?singleWsdl böyle çağırmalısın.

 

<wsdl:types>
<xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="IslemTuru">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="islem" type="tns:Islemler"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="Islemler">
<xs:restriction base="xs:string">
<xs:enumeration value="Islem1"/>
<xs:enumeration value="Islem2"/>
<xs:enumeration value="Islem3"/>
<xs:enumeration value="Islem4"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="IslemTuruResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="IslemTuruResult" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>



 

 

Sorunun cevabı bu. Bu XML'i servisine referans olarak eklersen metod senden Enum tipte değer isteyecek.

 

Kolay gelsin.


Bu kayıt FreKanS tarafından 11-10-2013 23:49:33 tarihinde düzenlendi.
3#
Sayfa 1 / 1[3Cevap]

İşaretler & Anlamları
Kilitli Kilitli
Çözüm Kabul Edildi Çözüm Kabul Edildi
Normal Normal