Я создаю игру для Windows Phone с платформой XNA.
Я хочу сохранить свои уровни в XML-файле, поэтому я подумал, что буду использовать xmlserialization и десериализацию. Сначала я создал тестовый проект, чтобы посмотреть, сработает ли он, и там нет проблем.
Теперь я создал редактор уровней, и это приложение для форм Windows, которое я использую для создания уровней, а не для их сериализации и десериализации в другом проекте (Windows Phone). Чтобы объекты оставались неизменными, я сослался на приложение Windows Phone в приложении Windows Form. Я использовал те же ссылки для сериализации.
с использованием System.Xml.Serialization;
Но когда я пытаюсь сериализовать объект, я получаю исключение:
Произошла ошибка, отражающая тип.
Итак, мой вопрос: почему я не могу сериализовать объекты из другого проекта?
Или это просто невозможно?
public static void SaveLevel(Level level)
{
FileStream fs = new FileStream(@"c:\level1.xml", FileMode.Create);
MemoryStream ms = new MemoryStream();
Serialize(ms, level);
fs.Write(ms.ToArray(), 0, (int)ms.Length);
ms.Close();
fs.Close();
ms.Dispose();
fs.Dispose();
}
public static void Serialize(Stream streamObject, object objectForSerialization)
{
if (objectForSerialization == null || streamObject == null)
return;
XmlSerializer serializer = new XmlSerializer(objectForSerialization.GetType()); //error occurs
serializer.Serialize(streamObject, objectForSerialization);
}
Объект, который нужно сериализовать.
public class Level
{
[XmlElement]
public string Name { get; set; }
public Level()
{
}
}
Как только я скопировал файл в проект levelEditor, он будет сериализован и десериализован.
Но я на самом деле не хочу копировать эти файлы, потому что если я изменяю файл в одном проекте, мне также нужно изменить его в другом проекте, что не очень удобно.