2016-03-01 3 views
0

У меня есть несколько классов с рядом свойств. Значение для этих свойств будет назначаться на основе определенных условий. После того, как значения присваиваются нескольким свойствам, я хотел бы сериализовать объект и включить только те реквизиты, у которых есть значение, присвоенное им.Условная сериализация свойств в C#

Я пробовал искать это в Интернете, но я не мог найти удачи.

Любое предложение об осуществлении этого было бы высоко оценено.

Update:

У меня есть несколько классов, как

class A{ 
     public static string PropA_in_A { get; set; } 
     public string PropB_in_A { get; set; } 
     public static string PropC_in_A { get; set; } 
     public static string PropD_in_A { get; set; } 
} 

class B{ 
     public static string PropA_in_B { get; set; } 
     public static string PropB_in_B { get; set; } 
     public static string PropC_in_B { get; set; } 
     public static string PropD_in_B { get; set; } 
} 

class C{ 
     public static string PropA_in_C { get; set; } 
     public static string PropB_in_C { get; set; } 
     public static string PropC_in_C { get; set; } 
     public static string PropD_in_C { get; set; } 
} 

Значения для свойств в этих классах должны уступленная в зависимости от условий. После присвоения значений должны быть сериализованы только те свойства, которые имеют значения, назначенные им.

main() 
{ 
A.PropB_in_A="Some Value"; 
A.PropA_in_B="Some Value"; 
A.PropC_in_C="Some Value"; 
} 

Здесь я хотел бы сериализовать только те свойства, которым присвоены значения.

+0

Возможный дубликат [Xml сериализации - Скрыть нулевые значения] (http://stackoverflow.com/questions/5818513/xml-serialization-hide-null-values) –

ответ

0

Вы можете использовать XmlElementAttribute для каждого свойства и установить IsNullable в false.

Есть пример на MSDN here.

[XmlElementAttribute(IsNullable = false)] 
public string City; 

Или использовать более короткую форму:

[XmlElement(IsNullable = false)] 
public string City; 

EDIT: Для обнуляемых типов значений, вы должны прыгать через несколько дополнительных обручей и добавить свойство, говорящее сериалайзер, если он должен сериализовать это значение.

public bool ShouldSerializeMyNullableInt() 
{ 
    return MyNullableInt.HasValue; 
} 

Смотрите этот ответ для справки: Xml serialization - Hide null values

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