#c# #silverlight-4.0
#c# #silverlight-4.0
Вопрос:
Предположим, у меня есть классный работник :
Public class Employee
{
public String ID {get;set;}
public String Name {get;set;}
public int Age {get;set;}
}
Теперь я сохранил некоторые объекты этого класса в текстовом файле или файле с каким-либо другим расширением, например .abc, используя StreamWriter как
<Employees>
<Employee ID="1" Name="ABC" Age="30"/>
<Employee ID="2" Name="XYZ" Age="35"/>
<Employee ID="3" Name="PQR" Age="45"/>
</Employees>
Проблема, с которой я сталкиваюсь здесь, заключается в том, что при чтении этого файла с помощью StreamReader я получаю строку, и я не могу извлечь объекты класса из этой строки.
Может кто-нибудь, пожалуйста, скажите мне, как я могу создать объект класса Employee из полученной мной строки, чтобы я мог получить список всех объектов Employee, которые хранятся в этой строке.
Комментарии:
1. Взгляните на (де-) сериализацию MSDN или класс XDocument
2. Текстовый файл кажется допустимым XML-файлом.
3. Допустим, мой файл имеет какой-то другой тип, например расширение .abc.. Затем в этом случае я читаю содержимое этого файла и получаю строку, тогда как я могу извлечь объекты из этой строки ..??
4. Расширение файла не имеет значения. Это зависит от того, как вы создаете этот файл в первую очередь. Как сказал Стефан Бауэр или я, правильный способ сделать это — использовать сериализацию и десериализацию, которые преобразуют объект или список объектов в некоторый формат, который может быть сохранен в файле (например, XML, но может быть JSON или что угодно, но для простоты: хранится как XML) — это называется «сериализация». Затем вам нужно проделать обратный путь — «десериализацию». Вы можете использовать любое окончание файла, которое вам нравится «.xml» — это, конечно, хорошо для XML. Если вы написали этот XML вручную, вам придется проделать больше работы.
Ответ №1:
Вы должны использовать сериализацию — для создания XML:
XmlSerializer serializer = new XmlSerializer(typeof(Employee));
using(TextWriter writer = new StreamWriter(filename))
{
var e1 = new Employee();
serializer.Serialize(writer, po);
}
Для чтения XML обратно в объекты:
FileStream fs = new FileStream(filename, FileMode.Open);
var po = (Employee) serializer.Deserialize(fs);
Это код для чтения и записи одним сотрудником. Чтобы прочитать или записать несколько, вы можете прочитать больше, например, здесь http://msdn.microsoft.com/en-us/library/90c86ass (ПРОТИВ 85).aspx