Warum sind Eigenschaften, ohne einen setter nicht serialisiert

Ich habe eine serialisierbare Klasse und einer der Eigenschaften, die in meiner Klasse generiert eine Guid im getter. Die Eigenschaft implementiert keine setter-und wird ignoriert, die während der Serialisierung. Warum ist das so und muss ich immer zur Implementierung einer setter, um für meine Eigenschaft serialisiert werden soll.

[Serializable]
public class Example
{
    [XmlAttribute("id")]
    public string Id
    {
        get
        {
             return Guid.NewGuid().ToString();
        }
    }
}

Ich habe versucht, die Umsetzung eine leere setter und es serialisiert richtig.

[Serializable]
public class Example
{
    [XmlAttribute("id")]
    public string Id
    {
        get
        {
             return Guid.NewGuid().ToString();
        }
        set {}
    }
}

Update:

Kann Sie zeigen auf, wie soll ich das definieren von Eigenschaften, deren Werte nie ändern, oder diejenigen, die Wert für die intern erzeugt?

Das zweite Beispiel serialisieren richtig... Aber was passiert, wenn Sie versuchen, zu Deserialisieren?
Versuchen YAXLib [+,+]
FYI, das XML-Serialisierungsprogramm ignoriert [Serializable].
Mir war nicht bewusst, dass.
Siehe auch force-xml-serialization-to-serialize-readonly-propertyund can-an-internal-setter-of-a-property-be-serialized

InformationsquelleAutor Konstantin Dinev | 2012-11-15

Schreibe einen Kommentar