ile Object türünde özelliği seri hale getirmek nasıl bir özelliği vardır. Ama nesneyi bu özellik ile seri hale getirdiğimde, serileştirilmiyor. XmlSerializer'a olası tipler vermenin bir yolu var mı?XmlSerializer
cevap
Bunu önermiyoruz ama evet, bir üye için birden aday türleri hakkında gerçekleri anlatmak [XmlElement]
vb kullanabilirsiniz:
public class Test
{
private static void Main()
{
var ser = new XmlSerializer(typeof (Test));
var obj = new Test {Value = "abc"};
ser.Serialize(Console.Out, obj);
obj = new Test { Value = 123 };
ser.Serialize(Console.Out, obj);
obj = new Test { Value = 456.7F };
ser.Serialize(Console.Out, obj);
}
[XmlElement("a", Type = typeof(int))]
[XmlElement("b", Type = typeof(string))]
[XmlElement("c", Type = typeof(float))]
public object Value { get; set; }
}
çıkışının önemli bit (bütün xmlns
/<?xml>
görmezden vs) şunlardır:
<Test>
<b>abc</b>
</Test>
<Test>
<a>123</a>
</Test>
<Test>
<c>456.7</c>
</Test>
Mükemmel çalışıyor! – user919426
Bu, yalnızca elemanlar için farklı adlar veya ad alanları kullanmanız durumunda çalışır (bu örnekte a, b, c). Benim durumumda, her zaman aynı olması için eleman ismine ihtiyacım vardı, bu yüzden benim için işe yarayacak bir cevap gönderdim. – Evan
Ben bir unsur niteliği olarak nesne türünü yazma, IXmlSerializable
arabirimini uygulayan yaptı. Not: Kodda ad alanı ve ASCII kodlaması kullanmıyorum, bunlar zorunlu olmayan seçimlerdir.
HTH, Cabbi
Ayrıca nesne özelliği içeren sınıfa üzerinde [XmlInclude(typeof(YourType))]
kullanabilirsiniz. OP durumunda Yani, bu
[XmlInclude(typeof(PossibleClassOne))]
[XmlInclude(typeof(PossibleClassTwo))]
public class MyClass
{
public object Tag { get; set; }
}
Bu şekilde görünecektir, sen
- 1. XmlSerializer
- 2. XmlSerializer
- 3. XmlSerializer
- 4. .NET'in XmlSerializer
- 5. XMLSerializer - XElement
- 6. XmlSerializer ve BinaryFormatter
- 7. XmlSerializer özel karakterleri kaçar &?
- 8. XmlSerializer Utf-8 kodlama
- 9. XmlSerializer Üretim XML No Ad Alanı Önek
- 10. XmlSerializer sxt tarafından oluşturulmuş XmlSerializers.dll kullanılmıyor
- 11. System.InvalidOperationException: XmlSerializer özniteliği System.Xml.Serialization.XmlChoiceIdentifierAttribute öğesinde geçerli değil
- 12. Serileştirme Listesi <> XmlSerializer ile
- 13. XmlSerializer ile rastgele/bilinmeyen türlerin serileştirilmesi
- 14. XmlSerializer tarafından üretilen XML'e xsl stil sayfası düğümü nasıl eklenir?
- 15. XMLSerializer() ile serileştirilmeden önce geçersiz karakterleri XML'den kaldırma()
- 16. XmlSerializer bir Nullable <int> içine seri hale getirebilir mi?
- 17. Nasıl yüzden <code>XmlSerializer</code> nesnesini kullanarak bu serisini mümkün olacak xml
- 18. önle XmlSerializer: Ben XML bir temel sınıf devralan bir sınıf seri hale başarmış
- 19. XmlSerializer xml'yi tanımlanmış bir sırada xml yapmak için herhangi bir yol var mı?
- 20. XmlSerializer, aynı seri hale getirici ile serileştirilmiş XML'yi seri hale getiremez
- 21. XmlSerializer.Serialize belirsiz
- 22. System.Net.IPAdres özelliği dahil olan bir sınıf nasıl serileştirilir?
- 23. Dosyaya Serileştirilecek bir nesne nasıl enjekte edilir?
- 24. Akış okunabilir hata
- 25. XML'yi doğrudan C# ile bir Akış yerine bir dizeye Serileştirebilir miyim?
- 26. XmlTextWriter'de Ayarlar özelliğini nasıl ayarlayabilirim, böylece her XML özniteliğini kendi satırına yazabilirim?
- 27. .NET oluşturulan XML
- 28. Properties varsayılan değerleri Properties.Settings.Default
- 29. C# - Bir liste gerçekten kolay serileştirebilirsiniz <String>
- 30. XML Serileştirilmiş Çıkışa bir xml şema bir başvuru ekleme
Sana ISerializable uygulayan ve seri hale kontrol edebilecek beklediğiniz her durumda sizin öğe adı
<Tag>
tutabilir Nesne, türüne göre türüne göre etiketleme türüne göre değişir. Ancak, daha sonra nesneyi nasıl deserialize edeceğinizi bilmiyorum. Yazı tipi nesnelerini serileştirmek iyi bir fikir olmayabilir. –@Adrian 'XmlSerializer'' ISerializable' ile ilgilenmez; Bununla birlikte, bu senaryoyu en iyi şekilde kullanacağımızdan emin olduğumu kabul ediyorum –
@Marc XmlSerializer ISerialiable'ı önemsemiyor ancak IXmlSerializable'ı önemsiyor ve bunu uygulayan bir nesne üzerinde okuma ve yazma yöntemlerini çağırıyor. – Fen