В настоящее время я переношу код на PCL (основные задачи .NET 4.5 + mobile через Xamarin), и я столкнулся с знакомой проблемой, сериализации классов, полученных из несериализуемых зависимостей. Я использую атрибуты DataContract/Member с DataContractJsonSerializer, и поэтому в непереносной версии этого сценария я использовал IDataContractSurrogate для эффективной замены классов, которые не могли быть запрограммированы для пользовательских, которые могли бы быть. IDataContractSurrogate не существует в PCL, а DataContractJsonSerializer, по-видимому, является логически сокращенной версией.Суррогатные типы для сериализации в C# Portable Class Library
Настоящий вопрос: Что такое переносной эквивалент IDataContractSurrogate?
Я до сих пор смотрел на:
[On (De) Сериализация] Атрибуты которые возвращают суррогатный класс, но не думаю, что это на самом деле, как эти атрибуты работают и, безусловно, не то, что они были предназначены для.
SerializationBinder, но это, кажется, не будет принят PCL совместимый DataContractJsonSerializer «Эта функция доступна только при использовании BinaryFormatter или NetDataContractSerializer».
DataContractResolver кажется лучшим вариантом, но он не включен нигде в настройках DataContractJsonSerializer.
JsonCreationConverter/[JsonConverter] из Json.NET, которые, кажется, как жизнеспособные варианты, но помешали бы мне обменивать форматы сериализации в будущих итерациях (т.е. JSON отлично подходит для отладки, но я мог бы переключиться на Binary позже, если это возможно).
Перечислив эти варианты, кажется, что проблема заключается в том, что разные сериализаторы .NET имеют разные требования, и поэтому их собственные способы решения этой проблемы означают, что мое желание оставить варианты формата открытыми, возможно, необоснованными. Я буду смотреть глубже на DataContractSerializerOperationBehavior, но если есть менее сложная альтернатива, я был бы более чем поддающимся.
Спасибо заранее,