2013-12-17 4 views
2

Я создал Serializable класса со свойствомСериализуемый класс не считая строковое свойство

[XmlAttribute("ToleranceSign"), DefaultValue("1")] 
    public string ToleranceSign { get; set; } 

Когда я сериализацией этого класса, как показано ниже

using (StringWriter writer = new StringWriter()) 
     { 
      XmlSerializer serial = new XmlSerializer(serializeData.GetType()); 
      XmlSerializerNamespaces xns = new XmlSerializerNamespaces(); 
      xns.Add(string.Empty, string.Empty); 
      serial.Serialize(writer, serializeData, xns); 
      writer.Flush(); 
      string serialContent = writer.ToString(); 
      return serialContent; 
     } 

Всех других свойств преобразуется в узлы XML, кроме ToleranceSign , Что-то не так я сделал в декларациях?

ответ

1

Если значение ToleranceSign равно null, оно будет игнорироваться и не сериализоваться.

Если значение ToleranceSign равно "1", то [DefaultValue("1")] не приведет к сериализации. В принципе: не включайте этот атрибут, если хотите, чтобы он всегда был сериализован, если не null.

+0

Спасибо Marc. Я удалил атрибут DefaultValue, и он работал нормально. Поскольку я присваивал значение «1» ToleranceSign, это не было сериализацией. Я всегда думал, что DefaultValue работает как значение по умолчанию в БД (т. Е. Если значение не назначено, оно добавит значение по умолчанию) !! – Naveen

0

Атрибут DefaultValue не приведет к присвоению значения. Вам нужно сделать этот корыточный код. См. note. При этом свойства строк должны, по меньшей мере, быть инициализированы String.Empty, чтобы получить сериализацию.

+0

Я присваивал этому свойству «1». – Naveen

Смежные вопросы