- У меня есть 2 проекта в решении.(Назовите их А и Б).Они оба стали сборками.
- У меня есть общий проект (назовите его S), на который ссылаются другие 2 проекта
- У меня есть класс (назовите его C) в проекте S
- Я сериализую его в проекте A
- Я десериализирую его в проекте B
- Я не могу привести его к C
Проблема в том, что тип десериализованного объекта«C, A», но когда я пишу код:
var c = GetDeserializedObject() as C;
c будет нулевым, потому что GetDeserializedObject() is C
возвращает false.
Вопрос:
Любая идея, как я должен получить эту работу?Используйте класс C в сборке B, которая была сериализована в сборке A.
Примечания:
Я использую этот код для сериализации моего объекта:
var serialized = MessagePackSerializer.Typeless.Serialize(this);
File.WriteAllBytes(outputFilePath, serialized);
И этот код для его десериализации:
MessagePackSerializer.Typeless.Deserialize(File.ReadAllBytes(inputFilePath)) as C;
Дополнительные комментарии:
Я не могу использовать BinaryFormatter, поскольку класс C содержит несколько свойств, типы которых не являются [Serializable]
Я также пытался использовать Newtonsoft Json Serializer, но не смог прочитать данные во время десериализации.Если я сериализую это с типами, то есть несоответствие типов.Если в некоторых случаях я сериализирую их без типов, система не может создавать экземпляры типов интерфейса или абстрактных классов.Потому что мои занятия выглядят так:
class C {
IMyInterface i;
}
class MyClass : IMyInterface { }
И я использую это так:
var c = new C {
i = new MyClass()
};