Сериализация XNA 4.0 - PullRequest
       8

Сериализация XNA 4.0

2 голосов
/ 18 мая 2011

Тип 'Microsoft.Xna.Framework.Graphics.RasterizerState' в сборе «Microsoft.Xna.Framework.Graphics, Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = 842cf8be1de50553 'is не помечен как сериализуемый.

Я пытаюсь сериализовать разделы игровой студии xna.

К сожалению, я не могу напрямую сериализовать этот класс.

Есть предложения?

1 Ответ

1 голос
/ 18 мая 2011

Это общая проблема. Первый вопрос, который я хотел бы задать себе, - почему вы пытаетесь сериализовать объект, тип которого не помечен как сериализуемый. Автор такого типа оставил это по какой-то причине? Есть ли вероятность, что в будущем тип будет расширен с помощью некоторого несериализуемого поведения?

Тогда в моей голове 3 решения. К сожалению, вы не можете напрямую сериализовать объект. Что вы можете сделать, это:

  1. Создайте объект-оболочку (помеченный как сериализуемый), содержащий все свойства, которые вы хотите сериализовать, и скопируйте значения из фактического объекта в объект-оболочку и обратно.

  2. Расширение на вариант 1: Распаковка простого объекта-оболочки, создание более динамического класса-оболочки, содержащего список KeyValuePairs, в котором вы привязываете propertyNames к propertyValues ​​и создаете некоторый универсальный код, который может заполнить этот список на основе существующего объект и заполнить объект на основе такого списка.

  3. Используйте небезопасный код и выполняйте сериализацию самостоятельно (закрепите объект, прочитайте его память и запишите в поток памяти). << Этот метод действительно очень небезопасен </p>

...