Gibt es ein Attribut, um leere Arrays in der XML-Serialisierung von C# zu überspringen? Dies würde die menschliche Lesbarkeit der XML-Ausgabe erhöhen.Gibt es ein Attribut, um leere Arrays in der XML-Serialisierung von C# zu überspringen?
8
A
Antwort
17
Nun, könnten Sie vielleicht eine ShouldSerializeFoo()
Methode hinzufügen:
using System;
using System.ComponentModel;
using System.Xml.Serialization;
[Serializable]
public class MyEntity
{
public string Key { get; set; }
public string[] Items { get; set; }
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
public bool ShouldSerializeItems()
{
return Items != null && Items.Length > 0;
}
}
static class Program
{
static void Main()
{
MyEntity obj = new MyEntity { Key = "abc", Items = new string[0] };
XmlSerializer ser = new XmlSerializer(typeof(MyEntity));
ser.Serialize(Console.Out, obj);
}
}
Die ShouldSerialize{name}
patten erkannt werden, und die Methode aufgerufen wird, um zu sehen, ob die Eigenschaft in der Serialisierung aufzunehmen. Es gibt auch ein alternatives {name}Specified
Muster, mit dem Sie auch Dinge beim Deserialisieren (über den Setter) erkennen können:
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
[XmlIgnore]
public bool ItemsSpecified
{
get { return Items != null && Items.Length > 0; }
set { } // could set the default array here if we want
}
Verwandte Themen
- 1. Gibt es ein Attribut, um Kaskadeneinheitstestfehler in MSTest zu vermeiden?
- 2. C# XML-Serialisierung eines Arrays - "leere" String-Werte überspringen
- 3. Gibt es ein Framework-Attribut, um ein Mitglied vor der Reflektion in .Net zu verbergen?
- 4. Gibt es in C/C++ gezackte Arrays?
- 5. Gibt es ein Programm, um Assembly in C++ zu konvertieren?
- 6. Gibt es in C# ein Rust-Äquivalent zu `dynamic`?
- 7. Gibt es eine Möglichkeit, ein GET-Formular zu stoppen, um leere Variablen zu senden?
- 8. Gibt es in Java ein Idiom für leere Methoden, die existieren, um eine Schnittstelle zu erfüllen?
- 9. Gibt es eine Möglichkeit, um sicher zu sein, Tests in einem bestimmten Paket zu überspringen?
- 10. gibt es ein Äquivalent von Array # compact für leere Elemente?
- 11. Gibt es ein Tool, um Methodenaufrufe in Python zu visualisieren?
- 12. Gibt es eine Möglichkeit, ungenutzte Bibliotheken beim Linken zu überspringen?
- 13. Gibt es ein Conditional-Attribut auf Klassenebene?
- 14. Strategie für XmlSerialisierung mit einer Schnittstelle?
- 15. Gibt es ein Attribut, um die Klasse oder Methode in .NET Thread-sicher zu markieren?
- 16. Yii2: Wie leere Formular beim Hochladen von Bild zu überspringen?
- 17. Gibt es ein C# -Äquivalent zu IsDebuggerPresent()?
- 18. Gibt es ein C++ - Äquivalent zu getcwd?
- 19. Gibt es ein Äquivalent zu C++ in Objective-C?
- 20. Gibt es ein .Net-Attribut, um die Eigenschaftenauswertung im Debugger zu verhindern?
- 21. Gibt es ein C# -Äquivalent zu C++ std :: partial_sort?
- 22. Gibt es ein Äquivalent von scipy.signal.deconvolve für 2D-Arrays?
- 23. Welche Bibliotheken gibt es gut, um ein System von nichtlinearen Gleichungen in C++ zu lösen?
- 24. Gibt es einen Algorithmus, um ein Abhängigkeitsdiagramm zu "vereinfachen"?
- 25. Gibt es ein offizielles Logo von C#?
- 26. Wie erhalten Sie GSON, um leere oder leere Objekte und leere Arrays und Listen wegzulassen?
- 27. Gibt es eine leere Klasse in Python?
- 28. jaxb Marshalling überspringen leere Elemente
- 29. Gibt es ein Äquivalent zur Statik von C in C#?
- 30. Überspringen ohne Fehler, wenn ein Element in Javascript nicht existiert