SORU
29 Ocak 2011, CUMARTESİ


DataContract ve DataMember özelliklerini kullanmaya ne zaman?

XML DataContract öznitelik hakkında kafam çok karışık. Benim bilgi gereğince serializating kullanıcı tanımlı sınıflar gibi türü için kullanılır. İstemci maruz olan bir sınıf bu gibi yan yazdım.

[DataContract]
public class Contact
{
    [DataMember]
    public int Roll { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public string Address { get; set; }

    [DataMember]
    public int Age { get; set; }
}

Düzgün çalışıyor ama ben DataContract Kaldır ve DataMember zaman da düzgün çalışıyor. Düzgün çalıştığını anlayamıyorum. Herhangi bir DataContract gerçek kullanım ne olduğunu bana söyleyebilir?

Benim hizmet sözleşmesi, bu gibi görünüyor

[ServiceContract]    
public interface IRestServiceImpl
{
    [OperationContract]        
    Contact XmlData(string id);      
}

CEVAP
29 Ocak 2011, CUMARTESİ


Programcılar bir sürü [DataContract] [DataMember] öznitelikleri boğulmuş olduğundan .NET Microsoft veri sözleşme yaptı 3.5 SP1, tüm sınıflar bile, bu nitelikler olmadan - çok eski XML seri hale getirici gibi seri hale getirici kolu.

Böylece .NET değilsin 3.5 SP1gerekveri sözleşme veya veri üyesi öznitelikleri artık ekleyin - eğer ... eğer ... o zaman veri sözleşme seri hale XML seri hale getirici gibi sınıf tüm ortak özellikleri seri hale getirmek olacaktır.

ANCAK:bu nitelikleri ekleyerek değil, yararlı yetenekleri çok kaybetmek:

  • [DataContract], olmadan veri için XML ad alanı içinde yaşamak tanımlayamazsınız
  • [DataMember] olmadan halka açık olmayan özellikleri veya alanları seri hale getirmek olamaz
  • [DataMember] olmadan seri hale getirme emri (Order=) tanımlanamaz ve DCS tüm özellikleri alfabetik olarak seri hale getirmek
  • [DataMember] olmadan mülkünüz için farklı bir ad (Name=) olarak tanımlanamaz
  • [DataMember] olmadan IsRequired= veya diğer yararlı nitelikleri gibi şeyler tanımlanamaz
  • [DataMember] olmadan bazı ortak özellikleri terk edemiyor - tüm ortak özellikler DCS tarafından seri hale getirilmiş olacak

Yani bir "hızlı & 'dirty" çözüm, buradan ayrılmama [DataContract] [DataMember] öznitelikleri çalışır - ama yine de iyi fikir onlara veri sınıfları - daha açık ne yaptığınızı ve kendiniz vermek erişmek için tüm bu ek özellikler anlamıyorsun olmadan onları

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bach Vlogs

    Bach Vlogs

    18 HAZİRAN 2011
  • NCIX Tech Tips

    NCIX Tech Ti

    2 Ocak 2007
  • Nightmare2005

    Nightmare200

    14 Ocak 2007