Özet Nesneleri sınıf nesnesinin serileştirilmesiyle ilgili iyi örnekler. Soyut olmayan temel sınıfı olan örnekler, XML Serialize generic list of serializable objects'da listelenmiştir. Benim taban sınıfı Microsoft.Build.Utilities.TaskXML Özet Taban sınıfıyla seri hale getirilebilir nesnelerin genel listesini seri hale getirin.
cevap
kesinlikle yazılı listeler ve bu tür kullanımına izin vermek için birkaç türetilmiş türleri ile soyut sınıfları genelde yararlıdır benzer.
Örneğin soyut ve DocumentFragment sınıfı olabilir TextDocumentFragment ve CommentDocumentFragment (Willis bu örnek) olarak adlandırılan iki beton sınıfları.
Bu, yalnızca bu iki türden nesneyi içerebilen bir Liste özelliğinin oluşturulmasına izin verir.
Eğer bir hata alıyorum bu listeyi döndüren bir WebService oluşturma girişiminde ama bu aşağıda kodu ile etrafında almak kolay ise ....
[Serializable()]
[System.Xml.Serialization.XmlInclude(typeof(TextDocumentFragment))]
[System.Xml.Serialization.XmlInclude(typeof(CommentDocumentFragment))]
public abstract class DocumentFragment {
...}
XmlInclude nitelikler
o olabilir sınıfını anlatmak Bu iki türetilmiş sınıflara serileştirilmelidir.Bu aşağıdaki gibi, gerçek türü belirten DocumentFragment öğesinde bir özellik oluşturmaktadır. türetilmiş sınıfına karşı spesifik
<DocumentFragment xsi:type="TextDocumentFragment">
herhangi additonal özellikleri de bu yöntem kullanılarak dahil edilir.
diğer alternatif çirkin olmadan (... jenerik listesinin kendisine bilinen türlerinin listesini taşımak için XmlElementAttribute
kullanmak da daha iyi görünümlü bir XML çıktısı ile sonuçlanacaktır
using System;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.Generic;
public abstract class Animal
{
public int Weight { get; set; }
}
public class Cat : Animal
{
public int FurLength { get; set; }
}
public class Fish : Animal
{
public int ScalesCount { get; set; }
}
public class AnimalFarm
{
[XmlElement(typeof(Cat))]
[XmlElement(typeof(Fish))]
public List<Animal> Animals { get; set; }
public AnimalFarm()
{
Animals = new List<Animal>();
}
}
public class Program
{
public static void Main()
{
AnimalFarm animalFarm = new AnimalFarm();
animalFarm.Animals.Add(new Cat() { Weight = 4000, FurLength = 3 });
animalFarm.Animals.Add(new Fish() { Weight = 200, ScalesCount = 99 });
XmlSerializer serializer = new XmlSerializer(typeof(AnimalFarm));
serializer.Serialize(Console.Out, animalFarm);
}
}
... olduğunu xsi:type
özniteliği) ...
<?xml version="1.0" encoding="ibm850"?>
<AnimalFarm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Cat>
<Weight>4000</Weight>
<FurLength>3</FurLength>
</Cat>
<Fish>
<Weight>200</Weight>
<ScalesCount>99</ScalesCount>
</Fish>
</AnimalFarm>
olmadan Dizgeleştirme bulunabilir. – Console
- 1. Koroutinli seri hale getirilebilir sınıf?
- 2. Seri hale getirilebilir nasıl uygulanır?
- 3. xml seri hale araya
- 4. Şartlı xml seri hale
- 5. Neden java'da HttpServlet seri hale getirilebilir?
- 6. Sınıfı XML'e seri hale getirin mi?
- 7. xml seri hale ve kodlama
- 8. Yalnızca Seri hale getirilebilir nesnelerle birlikte verilen sözlük
- 9. Restsharp kullanarak Xml listesini nasıl seri hale getirebilirim?
- 10. Seri hale getirme olayları
- 11. Web API - Dinamik XML seri hale getirme
- 12. Json.NET, Biçimlendirme ile akışa seri hale getirilebilir mi?
- 13. Java jenerikleri - T'nin Seri hale getirilebilir olmasını kısıtlamak mümkün mü?
- 14. Haskell'de fonksiyonların seri hale getirilmesi
- 15. PHP uyumlu seri hale getirme C/C++
- 16. JSON.NET seri hale getirme hatası
- 17. Yeniden Mevcut Nesne seri hale
- 18. JSONKIt seri hale getirme NSDIctionary
- 19. Seri hale getirme işlemlerini artırın:
- 20. , enum ile serileştirin ve seri hale getirin Gson
- 21. C# İçindeki bir nesne listesiyle bir nesneyi seri hale getirin
- 22. Seri haline getirilebilir bir nesne, bir pakete konduğunda her zaman seri hale getiriliyor mu?
- 23. XmlIgnoreAttribute, seri hale getirme sırasında değil, yalnızca seri hale getirme sırasında kullanılır?
- 24. Java nesnelerini Java koduna seri hale getirme
- 25. XmlSerializer, aynı seri hale getirici ile serileştirilmiş XML'yi seri hale getiremez
- 26. C# genel seri hale getirme yardımcı programı sınıfı
- 27. Django dayanak çerçevesindeki seri hale getirme yordamı
- 28. Boost :: serialization kullanarak XML'e seri hale getirme
- 29. Döngüsel referanslarla seri hale getirme yapılabilir mi?
- 30. SQL CE verilerinin XML'ye seri hale getirilmesi
@Dmitry ile katılıyorum. Alternatif cevap bunun yerine XmlArrayItemAttribute kullanabilirsiniz Hayvanlar elemanı tutmak için wan't XmlInclude http://stackoverflow.com/questions/370291/serializing-without-xmlinclude – walter