Как сериализовать объект внутри DLL? - PullRequest
3 голосов
/ 26 апреля 2011

Итак, у меня есть проект, который загружает dll во время выполнения, и я использую отражение и интерфейс для создания dll.

Я создал пользовательский элемент управления, обозначаемый как dll (во время выполнения), который имеет список, который необходимо сериализовать.Он правильно сериализует проект, но когда я пытаюсь загрузить его, я не могу десериализовать его.

Теперь я протестировал этот пользовательский контроль над другим проектом, который ссылается на пользовательский элемент управления как проект, и он работал хорошо.

Вот мой код:

    static public object SerializeLoad(string sFilename)
    {
        try
        {
            object _object = null;
            Stream stream = File.Open(sFilename, FileMode.Open);
            //BinaryFormatter bformatter = new BinaryFormatter();
            XmlSerializer bformatter = new XmlSerializer(typeof(ElementTodo), "ToDo");

            //_object = (_object.GetType())bformatter.Deserialize(stream);
            _object = bformatter.Deserialize(stream);
            stream.Close();
            return _object;
        }
        catch
        {
            return null;
        }
    }

Я пробовал оба, двоичный и XML, и оба через "Есть ошибка в документе XML (2, 2)."Есть идеи, почему это?Сгенерированный XML выглядит следующим образом:

  <?xml version="1.0"?> 
  <ArrayOfElementTodo xmlns:xsi="w3.org/2001/XMLSchema-instance"; xmlns:xsd="w3.org/2001/XMLSchema"; xmlns="ToDo"> 
      <ElementTodo Title="a" content="aa" isDone="false" /> 
      <ElementTodo Title="b" content="bb" isDone="false" /> 
      <ElementTodo Title="c" content="cc" isDone="false" /> 
      <ElementTodo Title="d" content="dd" isDone="false" /> 
  </ArrayOfElementTodo>

1 Ответ

2 голосов
/ 26 апреля 2011

Причина в том, что для возможности десериализации объекта должен быть доступен тип объекта, поскольку .NET - это среда со статической типизацией. (Каждый экземпляр вашей программы должен иметь тип со списком его членов и т. Д.)

Или вы можете использовать динамическую C # 4 для десериализации произвольного XML ( 1 , 2 ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...