XML десериализатор - объект пуст - PullRequest
0 голосов
/ 27 октября 2011

Я хочу конвертировать объекты в XML и наоборот.Я могу без проблем сериализовать свои объекты в документ XML, используя этот метод:

public static void SaveObjectToXML(T _obj, string fileName)
{
   XmlSerializer ser = new XmlSerializer(typeof(T));
   FileStream str = new FileStream(fileName, FileMode.Create);
   ser.Serialize(str, _obj);
   str.Close();
}

Но с десериализатором у меня есть некоторые проблемы ... Хотя в процессе я не получаю ошибок или проблем (то же самое длявызывая его методы), но когда я пытаюсь сделать доступ к любому члену, начинается проблема.Все члены имеют значение null (то же самое для методов, обрабатывающих любые члены).Вот код:

public static T SaveXMLToObject(string fileName)
{
   XmlSerializer ser = new XmlSerializer(typeof(T));
   StreamReader sr = new StreamReader(fileName);
   T dataSet = (T)ser.Deserialize(sr);
   return dataSet;
}

Любые идеи?


edit:

ОК. Я только что добавил оператор using, спасибо за это :) Полные классынемного, но они выглядят так:

public class User
{
   private string _name;
   public string Name
   {
     get { return _name; }
     set { }
   }
}

public class AllUser
{
   private User[] _users;
   public User[] Users
   {
      get { return _users; }
      set { }
   }
}

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Если пример кода завершен, я совсем не удивлен.У вас есть пустые сеттеры (именно это будет использовать сериализация).Не просто устранить ошибку сериализации, добавив пустой сеттер.Это необходимо для заполнения ваших данных.

Изменяет это на

set { _users = value; }

и должно работать

0 голосов
/ 27 октября 2011

Я думаю, вам просто нужно пометить классы, которые вы десериализуете, как [Serializable]. Например:

[Serializable]
public class User
{
    ...
}
...