C #에서 개체 및 개체 직렬화 만들기

Rayane Staszewski

저는 C #의 초보자이고 더 많은 변수와 생성자를 포함하는 Person 클래스를 만들었습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Contact
{
    [Serializable()] //On peut le sérializer    
    class Personne
    {
        //Constructeur
        public Personne(string prenom, string nom, int age, string dateNaissance, bool isMan, string notes, string pathImage, string mail, 
            string mail2, string tel, string telFix, string site, string rue, string ville, string numero, string codePostal, string departement)
        {
            Prenom = prenom;
            Nom = nom;
            Age = age;
            DateNaissance = dateNaissance;
            IsMan = isMan;
            Notes = notes;
            this.pathImage = pathImage;
            this.mail = mail;
            this.mail2 = mail2;
            this.tel = tel;
            this.telFix = telFix;
            this.site = site;
            this.rue = rue;
            this.ville = ville;
            this.numero = numero;
            this.codePostal = codePostal;
            this.departement = departement;
        }

        public override string ToString()
        {
            return base.ToString();
        }

        //Variables
        public string Prenom { get; set; }
        public string Nom { get; set; }
        public int Age { get; set; }
        public string DateNaissance { get; set; }
        public bool IsMan { get; set; }
        public string Notes { get; set; }
        public string pathImage { get; set; }
        public string mail { get; set; }
        public string mail2 { get; set; }
        public string tel { get; set; }
        public string telFix { get; set; }
        public string site { get; set; }
        public string rue { get; set; }
        public string ville { get; set; }
        public string numero { get; set; }
        public string codePostal { get; set; }
        public string departement { get; set; }
    }
}

이 클래스의 객체 생성은 내 양식의 버튼을 누를 때 여기에서 수행됩니다.

private void Btn_valider_Click(object sender, EventArgs e)
{

                //Création de l'objet
                Personne contact = new Personne(Prenom, Nom, Age, dateNaissanceStr, isMan, notesStr, pathImage, mail, mail2, tel, telFix,
                    site, rue, ville, numero, codePostal, departement);

                //Sauvegarde l'objet
                Stream fichier = File.Create(@"contact.dat");
                BinaryFormatter serializer = new BinaryFormatter();
                serializer.Serialize(fichier, contact);
                fichier.Close();

                this.Close();
            }
            catch
            {
                MessageBox.Show("Erreur.");
            }
        }
    }
}

그래서, 우리가 볼 수 있듯이, 나는 연락처 개체를 만들지 만 (연락처 관리자를 만듭니다), 우리는 하나의 연락처 만 가지고 있지 않기 때문에 여러 개의 Person 개체가 있기를 원합니다. 그러나 객체를 다시 생성하면 내 직렬 변환기는 마지막으로 생성 된 객체 만 가져 오며 모든 객체를 복구하고 싶습니다.

브렛 캐스 웰

내 의견과 관련하여 여기에서 고려해야 할 몇 가지 사항이 있습니다 (따라서 몇 가지 구현은 이러한 고려 사항과 관련이 있습니다).


이 답변은 List<Personee>직렬화하기 전에 파일이 존재하는지 여부에 대한 조건부 검사가 있는 유형 에 역 직렬화 및 직렬화를 사용 합니다.

모의 데이터

[Serializable]
public class Personee
{
    public string Prenom { get; set; }
    public string Nom { get; set; }
    public int Age { get; set; }
    public string DateNaissance { get; set; }
    public bool IsMan { get; set; }
    public string Notes { get; set; }
    public string pathImage { get; set; }
    public string mail { get; set; }
    public string mail2 { get; set; }
    public string tel { get; set; }
    public string telFix { get; set; }
    public string site { get; set; }
    public string rue { get; set; }
    public string ville { get; set; }
    public string numero { get; set; }
    public string codePostal { get; set; }
    public string departement { get; set; }
}

public static string FilePath = @"contacts.dat";

public static void RunSample()
{
    Button_Click(null, null);
}

견본

public static void Button_Click(object sender, EventArgs args)
{
    var personee = new Personee
    {
        Prenom = "Prenom",
        Nom = "Nom",
        Age = 21,
        DateNaissance = "DateNaissance",
        IsMan = true,
        Notes = "Notes",
        pathImage = "pathImage",
        mail = "mail",
        mail2 = "mail2",
        tel = "tel",
        telFix = "telFix",
        site = "site",
        rue = "rue",
        ville = "ville",
        numero = "numero",
        codePostal = "codePostal",
        departement = "department"
    };

    SeralizePersoneeDataFile(personee);
}

public static void SeralizePersoneeDataFile(Personee personee)
{
    SeralizePersoneeDataFile(new Personee[] { personee });
}

public static void SeralizePersoneeDataFile(IEnumerable<Personee> personees)
{
    var personeeDataList = (File.Exists(FilePath))
        ? DeseralizePersoneeDataFile()
        : new List<Personee>();

    personeeDataList.AddRange(personees);

    using (FileStream fichier = File.OpenWrite(FilePath))
    {
        BinaryFormatter serializer = new BinaryFormatter();
        serializer.Serialize(fichier, personeeDataList);
    }
}

public static List<Personee> DeseralizePersoneeDataFile()
{
    using (FileStream fichier = File.OpenRead(FilePath))
    {
        BinaryFormatter serializer = new BinaryFormatter();
        return (serializer.Deserialize(fichier) as List<Personee>);
    }
}

이 직렬화 구현은 전체 내용을 파일에 기록하기 때문에 직렬화 전 역 직렬화가 필요합니다 (추가하지 않음). 즉, 데이터 파일에 100 개의 연락처가있는 경우 이러한 방식으로 1 개의 레코드를 작성하면 파일을 지우고 1 개만 저장합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Jackson 및 @XmlValue에서 개체 직렬화

분류에서Dev

graph.microsoft.com 개체 만들기 및 역 직렬화

분류에서Dev

C #에서 JSON 개체 역 직렬화

분류에서Dev

직렬화 및 쓰기 개체

분류에서Dev

C # 단일 개체에서 두 Jarray 개체 역 직렬화

분류에서Dev

파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

분류에서Dev

기존 배열 및 개체에서 새 개체 만들기

분류에서Dev

Django 직렬화에서 OneToOne 필드 사용자 개체 만들기

분류에서Dev

Visual C ++에서 DateTime 개체 만들기

분류에서Dev

C ++에서 개체 배열 만들기

분류에서Dev

MongoDb + C #에서 기본 생성자없이 개체 역 직렬화

분류에서Dev

개체를 만들지 않은 직렬화 값 C #

분류에서Dev

C # / JSON 개체 직렬화, 역 직렬화 및 대 / 소문자 문제 없음

분류에서Dev

JSON 문자열을 C # 및 Unity의 개체로 역 직렬화

분류에서Dev

(역) C #에서 변경된 개체의 직렬화

분류에서Dev

C #에서 XML을 개체로 역 직렬화하는 방법

분류에서Dev

C #에서 JSON 역 직렬화 : 개체 대 배열

분류에서Dev

C # 및 ASP.NET MVC 및 JSON.NET을 사용하여 JSON 역 직렬화 및 비 기본 개체 인쇄

분류에서Dev

JSON 개체 역 직렬화 및 작업

분류에서Dev

WebSocketSubject에서 Blob 개체 역 직렬화

분류에서Dev

XML에서 개체 역 직렬화로

분류에서Dev

C ++-신 개체 만들기

분류에서Dev

C #에서 3 개의 하위 개체를 포함하는 JSON 개체 역 직렬화

분류에서Dev

C # 개체 오류에 대한 JSON 응답 역 직렬화

분류에서Dev

C #의 목록이있는 개체에 XML 역 직렬화

분류에서Dev

개체에 개체 만들기

분류에서Dev

C ++ MFC에서 이진 직렬화 된 개체를 C #에서 역 직렬화 할 수 있습니까?

분류에서Dev

자식 개체 및 형제 개체에서 개체 이름이 동일한 XML Serializer를 사용하여 개체를 직렬화 할 수 없습니다.

분류에서Dev

개체 컬렉션 직렬화 및 역 직렬화

Related 관련 기사

  1. 1

    Jackson 및 @XmlValue에서 개체 직렬화

  2. 2

    graph.microsoft.com 개체 만들기 및 역 직렬화

  3. 3

    C #에서 JSON 개체 역 직렬화

  4. 4

    직렬화 및 쓰기 개체

  5. 5

    C # 단일 개체에서 두 Jarray 개체 역 직렬화

  6. 6

    파일에서 개체를 역 직렬화 및 재 직렬화하는 데 문제가있는 C # JSON.net

  7. 7

    기존 배열 및 개체에서 새 개체 만들기

  8. 8

    Django 직렬화에서 OneToOne 필드 사용자 개체 만들기

  9. 9

    Visual C ++에서 DateTime 개체 만들기

  10. 10

    C ++에서 개체 배열 만들기

  11. 11

    MongoDb + C #에서 기본 생성자없이 개체 역 직렬화

  12. 12

    개체를 만들지 않은 직렬화 값 C #

  13. 13

    C # / JSON 개체 직렬화, 역 직렬화 및 대 / 소문자 문제 없음

  14. 14

    JSON 문자열을 C # 및 Unity의 개체로 역 직렬화

  15. 15

    (역) C #에서 변경된 개체의 직렬화

  16. 16

    C #에서 XML을 개체로 역 직렬화하는 방법

  17. 17

    C #에서 JSON 역 직렬화 : 개체 대 배열

  18. 18

    C # 및 ASP.NET MVC 및 JSON.NET을 사용하여 JSON 역 직렬화 및 비 기본 개체 인쇄

  19. 19

    JSON 개체 역 직렬화 및 작업

  20. 20

    WebSocketSubject에서 Blob 개체 역 직렬화

  21. 21

    XML에서 개체 역 직렬화로

  22. 22

    C ++-신 개체 만들기

  23. 23

    C #에서 3 개의 하위 개체를 포함하는 JSON 개체 역 직렬화

  24. 24

    C # 개체 오류에 대한 JSON 응답 역 직렬화

  25. 25

    C #의 목록이있는 개체에 XML 역 직렬화

  26. 26

    개체에 개체 만들기

  27. 27

    C ++ MFC에서 이진 직렬화 된 개체를 C #에서 역 직렬화 할 수 있습니까?

  28. 28

    자식 개체 및 형제 개체에서 개체 이름이 동일한 XML Serializer를 사용하여 개체를 직렬화 할 수 없습니다.

  29. 29

    개체 컬렉션 직렬화 및 역 직렬화

뜨겁다태그

보관