атрибут [NonSerialized]

zuev
Дата: 05.01.2010 16:35:54
дано

 
[Serializable]
    public class DOCustomElement1
    {
        [NonSerialized]
        public OracleConnection connection;
        
        public DOCustomElement1()
        {
        }
    }

[Serializable]
    public class DOArticleRow1 : DOCustomElement1
    {
        
        
        [XmlElement]
        public string article_nr;
        
        public DOArticleRow1()
        { }
    }

Пытаюсь сериализовать объект.
DOArticleRow1 arrow = new DOArticleRow1();
arrow.article_nr = "article_nr 2";
                        
XmlWriter writer = new XmlTextWriter(@"c:\temp\1\test.xml", Encoding.UTF8);
XmlSerializer serializer = new XmlSerializer(typeof(DOArticleRow1));
serializer.Serialize(writer, arrow);
writer.Close();

Вылазит ошибка. Ругается что не может сериализовать, так как есть поле с типом OracleConnection.
Почему не работает атрибут [NonSerialized]?

Варианты, при которых все нормально
// это просто так для проверки - работает
[NonSerialized]
public int connection;

// это подходит, но не должно же быть так жестко - управлять сериализацией через доступность полей
[NonSerialized]
protected OracleConnection  connection;
Schneider
Дата: 05.01.2010 18:02:54
Используйте аттрибут [XmlIgnore]. [NonSerialized] используется для других типов сериализации, например, бинарной.
zuev
Дата: 06.01.2010 09:48:31
Спасибо