У меня есть следующий класс
[DataContract(Namespace = "", Name = "VersionRange")]
public sealed class VersionRange
{
[DataMember(Name = "Lower")]
private readonly Version _lower;
[DataMember(Name = "Upper")]
private readonly Version _upper;
public VersionRange(Version lower, Version upper)
{
_lower = lower;
_upper = upper;
}
}
и я хочу, чтобы de сериализовался из следующего XML
<?xml version="1.0" encoding="utf-8"?>
<VersionRange>
<Lower>1.2.3.4</Lower>
<Upper>5.6.7.8</Upper>
</VersionRange>
Я пытался заархивировать это, внедрив IDataContractSurrogate, но безуспешно. Когда я возвращаю typeof(string)
для typeof(Version)
в GetDataContractType
, десериализация метода завершается неудачно, а метод GetDeserializedObject не вызывается.
Итак, есть ли шанс использовать стандартный класс Version и десериализовать его из строки "a.b.c.d"
?