Bir XML dosyası için bir datetime yyyyMMdd biçimine serileştirmem/deserialize etmem gerekiyor. Bunun için kullanabileceğim bir özellik/çözüm var mı?Tarihin XmlSerialization formatı belirtebilir misiniz?
cevap
Hayır, yok. Bu formatta ise, o zaman XML Şeması ile ilgili geçerli bir dateTime değildir. aşağıdaki gibi
Yapabileceğiniz en iyisi:
[XmlIgnore]
public DateTime DoNotSerialize {get;set;}
public string ProxyDateTime {
get {return DoNotSerialize.ToString("yyyyMMdd");}
set {DoNotSerialize = DateTime.Parse(value);}
}
Not kaydetme: hem bir get/set mevcut olmalıdır. Mülkümün neden serileştirilmediğini bir buçuk saat hata ayıkladım. 'Set' olmadığım ortaya çıktı, çünkü kendime şöyle düşündüm: “Bu değeri asla değiştirmeyeceğim; Neden bir set yazmaktan sıkıldınız? ' – spamguy
@spamguy: XmlSerializer yalnızca ortak özellikleri hem genel kullanıma hem de herkese açık kümeyle işler. –
XmlElementAttribute #DataType gerekenler sağlamak olmalıdır:
[XmlElement(DataType="date")]
public DateTime Date1 {get;set;}
Bu DATE1 uygun xml date biçimine tefrika özelliği alacak.
Hayır, sorun standart olmayan bir xml tarih biçimine serileştirmem gerektiğidir. Kabul edilen çözüm benim için gittiğim şey. – cjk
Bu benim için çalışmıyor, bir yapı hatası veriyor. [XmlElement (DataType = "tarih")] çalışır. –
Teşekkürler. Sorunumu çözdüm. Zaman bileşenini kaldırmaya çalışıyordum. Şerefe! –
Değişkenin alıcısını ve ayarlayıcısını değiştirebilirsiniz. Mesela ben bir enum Sex {Bilinmeyen, Kadın, Erkek} vardı ve ben erkek ve f dişi içine biçimlendirme bir string dizisi vardı. Xml serializer da tam enum isminin f ve m inseatd yazdı. İyi çalıştı ama bunun için neredeyse hiç pratik kullanım yok. – BlueWizard