Можно ли сохранить структуру в текстовом файле с помощью C # - PullRequest
1 голос
/ 07 июня 2010

Мне нравится сохранять структуру в текстовом файле, а также извлекать то же самое.

Я создал имя структуры. Сведения о студенте состоят из значений

studentid, имя студента, студент avg.iМне нравится хранить детали этой структуры в Textfile для многих студентов. После этого мне нравится получать эти детали из Textfile, используя идентификатор студента. Я работаю в приложении формы wondows. Это возможно в c #.

Ответы [ 6 ]

3 голосов
/ 07 июня 2010

Вы можете хранить свою коллекцию структур в XML-файле, который представляет собой структурированный текст.
Вот очень быстрый пример для начала:

    using System.Collections.Generic;
    using System.IO;
    using System.Xml;
    using System.Xml.Serialization;

    public class Student {
        [XmlElement("id")]
        public int id;
        [XmlElement("name")]
        public string name;
    }

    [XmlRoot("students")]
    public class Students {
        [XmlElement("students")]
        public List<Student> students = new List<Student>();
    }

    class Program {
        static void Main(string[] args) {
            Students s = new Students();
            s.students.Add(new Student() { id = 1, name = "John Doe" });
            s.students.Add(new Student() { id = 2, name = "Jane Doe" });
            XmlSerializer xs = new XmlSerializer(typeof(Students));
            using (FileStream fs = new FileStream("students.xml", FileMode.Create, FileAccess.Write)) {
                xs.Serialize(fs, s);
            }
        }
    }

Вы получите что-то вроде:

<?xml version="1.0"?>
<students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <students>
    <id>1</id>
    <name>John Doe</name>
  </students>
  <students>
    <id>2</id>
    <name>Jane Doe</name>
  </students>
</students>
2 голосов
/ 07 июня 2010

Вы также можете взглянуть на XmlSerializer :

Сериализует и десериализует объекты в и из документов XML. XmlSerializer позволяет вам контролировать, как объекты кодируются в XML.

1 голос
/ 07 июня 2010

Ну, есть XML

0 голосов
/ 07 июня 2010

Вам просто нужно сериализовать объекты в файл .Проверьте статью.

0 голосов
/ 07 июня 2010

Как и Paolo (и другие), я бы создал конкретный класс и класс-контейнер:

[DataContract]
public class Student
{
    [DataMember]
    public int ID { get; set; }

    [DataMember]
    public string FirstName { get; set; }

    [DataMember]
    public string LastName { get; set; }
}

[DataContract]
public class StudentList
{
    [DataMember]
    public string Name { get; private set; }

    [DataMember]
    public List<Student> Students { get; private set; }

    public StudentList(string name)
    {
        Name = name;
        Students = new List<Student>();
    }
}

Их можно (де) сериализовать с помощью DataContractSerializer . Вышеуказанные классы являются лишь грубой отправной точкой. В зависимости от ваших потребностей вы должны думать о частных установщиках, неизменяемости и т. Д.

Но если у вас есть такие специфические классы, вы можете легко создать BindingSource , поместить в него свой StudentList.Students и передать этот BindingSource в DataGridView для визуализации и изменения списка.

0 голосов
/ 07 июня 2010

Вы можете использовать XML-файл; xml - это по сути структурированный текст, который, кажется, именно то, что вы ищете. Начните с пространства имен System.Xml.

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