Kann man XmlAttributes verwenden, um XmlIgnore selektiv zu verwenden?

8

Ich habe eine ziemlich große Klasse, um als Xml zu serialisieren, und um den verschwendeten Raum zu reduzieren, möchte ich einige der Klasseneigenschaften selektiv filtern. Zum Beispiel wird einer Eigenschaft in der Klasse nur ein Wert von etwa einem Zehntel zugewiesen, und wenn ich das Serialisierungsattribut wie folgt codiere,

%Vor%

Wenn es (meistens) keinen Wert gibt, wird dies immer wieder als

serialisiert %Vor%

Gibt es eine Option oder ein Attribut, das die Eigenschaft für die Serialisierung ignoriert, wenn ihr Wert leer ist, aber nicht ignoriert, wenn sie nicht leer ist?

    
Cyberherbalist 12.03.2012, 17:54
quelle

1 Antwort

10

Sie können Methoden für jeden der Werte erstellen, die Sie nicht serialisiert haben möchten

Die folgende Methode gibt true zurück, wenn WorkClass etwas anderes als eine leere Zeichenfolge enthält. Wenn Sie .NET Framework 4 verwenden, können Sie string.IsNullOrWhitespace() verwenden, das auch nach Leerzeichen% co_de sucht %.

%Vor%

Wenn der Xml Serializer ausgeführt wird, sucht er auf der Grundlage der Namenskonvention nach dieser Methode und wählt dann aus, ob diese Eigenschaft serialisiert werden soll oder nicht.

Der Name der Methode sollte immer mit ' ' beginnen und dann mit dem Namen der Eigenschaft enden. Dann müssen Sie einfach einen booleschen Wert zurückgeben, der auf der von Ihnen gewünschten Bedingung basiert, ob der Wert serialisiert werden soll oder nicht.

    
Anthony Shaw 12.03.2012, 18:01
quelle

Tags und Links