2011-03-29 14 views
6

Yuvalanmış bir sınıfı olan bir nesneyi serileştirmeye çalışıyorum. Ben [NonSerialized] özniteliği ile iç içe sınıf etiketledi ancak bir hata alırsınız: Ben serileştirme gelen iç içe sınıf atlamak nasılNonSerialized attribute oluşturma hatası

Attribute 'NonSerialized' is not valid on this declaration type. It is only valid on 'field' declarations.

?

Yapmaya çalıştığım şeyi gösterebilecek bazı kodları ekledim. Yardımlarınız için teşekkürler.

[Serializable] 
public class A_Class 
{ 
    public String text { get; set; } 

    public int number { get; set; } 
} 

[Serializable] 
public class B_Class 
{ 
    [NonSerialized] 
    public A_Class A { get; set; } 

    public int ID { get; set; } 
} 

public byte[] ObjectToByteArray(object _Object) 
{ 
    using (var stream = new MemoryStream()) 
    { 
     var formatter = new BinaryFormatter(); 
     formatter.Serialize(stream, _Object); 
     return stream.ToArray(); 
    } 
} 

void Main() 
{ 
    Class_B obj = new Class_B() 

    byte[] data = ObjectToByteArray(obj); 
} 
+1

Hata, sorunu tam olarak açıklıyor - bu özniteliği alanlar dışında bir özelliğe uygulayamıyorsunuz (bir mülke uygulamak için çalışıyorsunuz). Bu XML serileştirme için olsa da, bu bana yardımcı olarak – Alex

cevap

9

hata size bilmeniz gereken her şeyi söyler: NonSerialized sadece alanlara uygulanabilir, ancak bir otomatik özelliği olsa bir özellik uygulamak için çalışıyoruz.

Sahip olduğunuz tek gerçek seçenek, StackOverflow question numaralı belgede belirtildiği gibi bu alan için bir otomatik özellik kullanmamaktır.

7

açıkça destek alanını kullanarak deneyin hangi can işareti [NonSerialized]

[Serializable] 
public class B_Class 
{ 
    [NonSerialized] 
    private A_Class a; // backing field for your property, which can have the NonSerialized attribute. 
    public int ID { get; set; } 

    public A_Class A // property, which now doesn't need the NonSerialized attribute. 
    { 
    get { return a;} 
    set { a= value; } 
    } 
} 

olarak sorun NonSerialized nitelik alanlarda geçerlidir ancak özellikleri, bu nedenle kullanamazsınız olmasıdır Otomatik uygulanan özellikler ile kombinasyon.

İlgili konular