Betrachten Sie das folgende übermäßig vereinfachte Stück XML:
5
Insbesondere betrachtend das AttributeValue Element, aus dem DataType Attribut weiß ich, dass mein Wert vom Typ integer ist (obwohl es auch double, string, datetime sein könnte... irgendein etablierter Datentyp aus dem w3 Standard). Ich möchte dieses XML gerne zu einer .NET-Klasse mit dem stark typisierten Wert deserialisieren. Das erste, was mir in den Sinn kam, war, eine generische AttributeValue-Klasse zu erstellen:
public class AttributeValue
{
public T Value {get; set;}
}
aber natürlich wird das aus ein paar Gründen nicht funktionieren - der größte Grund ist, dass ich den Typ in der Elternklasse deklarieren müsste, was nicht kompiliert, weil T nicht definiert ist:
public class ElementA
{
public AttributeValue {get; set; } // Natürlich wird das nicht funktionieren, weil T
} // nicht definiert ist.
Außerdem müsste ich wahrscheinlich IXmlSerializable in meine Klasse implementieren, um die benutzerdefinierte Serialisierung zu behandeln.
Gibt es einen besseren Weg, dieses Problem zu lösen? Ich weiß, dass ich das DataType Attribut in meinem Code serialisieren und den Wert als String speichern kann, um ihn später zu konvertieren, aber es wäre hilfreich, tatsächlich den richtigen Typ in meinem Geschäftsobjekt für spätere Verarbeitung zu haben.
Vielen Dank für jede Hilfe!
Jason