2012-03-12 52 views
8

Xml olarak serileştirmek için oldukça büyük bir sınıfa sahibim ve boş alanı azaltmak için sınıf özelliklerinden bazılarını XmlIgnore seçmek istiyorum. Örneğin, sınıfta bir özellik değerine on defa ya da öylesine sadece bir takım atanır ve ben seri hale getirme özelliğini kod eğer hiçbir değer varsaXmlAttributes seçmeli olarak XmlIgnore için kullanılabilir mi?

[XmlAttribute] 
public String WorkClass 
{ 
    get { return _workClass; } 
    set { _workClass = value; } 
} 

aşağıdaki gibidir (çoğu zaman) bu tekrar tekrar

WorkClass="" 

değeri boşsa serileştirme için özellik göz ardı edecek bir seçenek ya da nitelik var mı

olarak tefrika, ancak boş değilse bunu göz ardı?

cevap

10

WorkClass boş bir dize dışında bir şey içerdiğinde .NET Framework 4 kullanıyorsanız eğer, sizi izleyen yöntem true dönecektir Eğer

tefrika değil isteyen değerlerin her biri için yöntemler oluşturabilir string.IsNullOrWhitespace()'u kullanmayı seçebilir, bu da ' ' boş alanlarını kontrol eder.

public bool ShouldSerializeWorkClass() { 
    return !string.IsNullOrEmtpy(WorkClass); 
} 

Xml serileştiricisi çalışır

, bu adlandırma kuralına dayanan bu yöntem için bakmak ve o özelliği seri edip etmemeye seçecektir.

Yöntemin adı her zaman ShouldSerialize ile başlamalı ve ardından özellik adıyla bitmelidir. Daha sonra, değeri serileştirip yükseltmemek için, ne şartlı olursa olsun, bir boole döndürmeniz yeterlidir.

+4

Bu harika! Ayrıca sezgisel olmayan IMHO. Seri hale getirme özniteliğinde bir çeşit değiştirici beklerdim, bilirsin, [XmlAttribute (IgnoreOnNullOrEmpty = "true")] gibi bir şey. – Cyberherbalist

İlgili konular