Я хочу использовать собственный расширенный тип (например, Nullable) в классе DataContract. Я пытался написать IDataContractSurrogate
, но при десериализации не получается.
Мой усиленный тип выглядит так:
public struct Amplified<TValue>
{
public TValue Value { get; set; }
//... some special code ...
}
И DataContract может выглядеть так:
[DataContract] public class MyDTO
{
[DataMember] public Amplified<string> SpecialString { get; set; }
}
Приведенный выше код работает, но создает ненужную вложенность со свойством Value расширенного типа. Я хочу, чтобы DataContract представлял Ampliefied как обычную строку на проводе.
Возможно ли это с сериализаторами DataContract (JSON и Xml)? Почему я получаю InvalidCastException при использовании IDataContractSurrogate для замены Amplified строкой?