Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Запретить сериализовать свойство


Автор: Kolovorot 22.4.2010, 15:03
Можно ли запретить сериализовать свойство, если значение поля, которое используется в свойстве, есть null? И скажется ли это на дальнейшей десериализации.  Сериализую с помощью XmlSerializer.

Код

   private SomeClass someObj;

   public String SomeString
   {
      get{ return someObj.someString;}
      set{ someObj = new (value);}
   }


Автор: azesmcar 22.4.2010, 15:06
через атрибуты
http://msdn.microsoft.com/en-us/library/83y7df3e(v=VS.71).aspx

конкретно
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlignoreattribute(v=VS.71).aspx

Автор: Kolovorot 22.4.2010, 15:12
Цитата(azesmcar @ 22.4.2010,  15:06)


конкретно
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlignoreattribute(v=VS.71).aspx

Можно ли аттрибут [XmlIgnore] устанавливать как-то программно. Если someObj = null, установать, иначе убрать?

Автор: azesmcar 22.4.2010, 15:30
вот пример
Код

    public class A
    {
        public int a;
        public int b;
        [XmlIgnore]
        public bool bSpecified {
            get { return a > 10; }
        }
    }

b не будет сериализировано, если а <= 10.

Автор: Kolovorot 22.4.2010, 22:05
Благодарю, azesmcar. 
Я вначале подумал, что это работать не будет. smile  Попробывал и заработало. Интуитивно смысл понятен. А где можно про это прочитать? Если можно на русском, ну а если нет то на английском.

Автор: azesmcar 23.4.2010, 08:23
Цитата(Kolovorot @  22.4.2010,  22:05 Найти цитируемый пост)
Я вначале подумал, что это работать не будет. smile  Попробывал и заработало. 

smile 

Цитата(Kolovorot @  22.4.2010,  22:05 Найти цитируемый пост)
А где можно про это прочитать? Если можно на русском, ну а если нет то на английском. 

http://msdn.microsoft.com/en-us/library/dd585968(office.11).aspx
http://msdn.microsoft.com/en-us/library/53b8022e(VS.71).aspx
тут описан метод ShouldSerialize, делает тоже самое, просто название другое, в принципе наверное так лучше.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)