У меня есть сервер, работающий на MS.NET, и клиент на Mono (это движок Unity3D), и когда я пытаюсь выполнить BinaryFormatter(). Десериализовать такой объект:
[Serializable]
public class Simulator
{
public IDictionary<int, Task> tasks = new Dictionary<int, Task>();
клиентская сторона не может найти/загрузить типы: Dictionary, List... Тот же «клиентский код», работающий под MS.NET, работает хорошо, т.е. не имеет исключений при десериализации.
Как я прочитал из http://www.mono-project.com/FAQ:_Technical#Compatibility это распространенная проблема:
"Если вы сериализуете свои собственные классы, проблем нет, так как вы контролируете сборки и классы, используемые для сериализации. Однако, если вы сериализуете объекты из фреймворка, совместимость сериализации не гарантируется, так как внутренняя структура этих объектов может отличаться. Эта совместимость не гарантируется даже между разными версиями MS.NET или версиями Mono."
Помогает ли ProtoBuf-Net избежать/решить эту проблему сериализации/десериализации?