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

  • colacas

    colacas

    29 EKİM 2006
  • HDstarcraft

    HDstarcraft

    12 Mayıs 2009
  • UCBerkeley

    UCBerkeley

    3 Mayıs 2006