Jak utworzyć plik z listą proflili

0

Chciałbym utworzyć coś na styl logowania google gmail z zapisanymi profilami.
Mam klase User składającą się z loginu i hasała i chciałbym żeby w momencie zalogowania profil mi się zapisywał w formie Listy do pliku. jak to mogę zrobić?

0

Poczytaj o klasie File z namespace System.IO. Nie wiem w czym masz problem. Masz jakiś konkretny, czy po prostu nie wiesz, jak zapisać plik?

1

Użyj do tego serializacji XML. Ujednolici Ci to format danych tak, że nie będziesz musiał martwić się tym w jaki sposób upakować je w pliku.

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

// Czy tam inna nazwa, bo na dobrą sprawę `ISerializable` już w .NET'cie istnieje :)
interface ISerializable
{
    void Serialize(string destinationFile);
    void Deserialize(string sourceFile);
}

[Serializable]
public class Person : ISerializable
{
    public string Name { get; set; }
    public string Surname { get; set; }

    public void Deserialize(string sourceFile)
    {
        var deserial = new XmlSerializer(typeof(Person));
        using (var stream = new StreamReader(sourceFile))
        {
            var data = (Person)deserial.Deserialize(stream);
            this.Name = data.Name;
            this.Surname = data.Surname;
        }
    }

    public void Serialize(string destinationFile)
    {
        var serial = new XmlSerializer(typeof(Person));
        using (var stream = new StreamWriter(destinationFile))
        {
            serial.Serialize(stream, this);
        }
    }
}

class Program
{
    public static void Main(string[] args)
    {
        var person = new Person { Name = "Joe", Surname = "Someone" };
        person.Serialize("database.txt");

        var newPerson = new Person();
        newPerson.Deserialize("database.txt");
        Console.WriteLine(newPerson.Name + " " + newPerson.Surname);
    }
}

Dane logowanie można dodatkowo zaszyfrować i zamiast string możesz spokojnie do pliku serializować zaszyfrowane bajty byte[] nie przejmując się kompletnie upakowaniem danych :) Rzecz jasna serializować w ten sposób można również całe kolekcje. Kwestia tego co wpiszesz jako typeof i do czego będziesz konwertował deserializowany obiekt.

2

To Serializable w kodzie @grzesiek51114 jest niepotrzebne, bo służy do umożliwienia serializacji binarnej, której tutaj nie mamy.
No i ten obiekt, który sam się serializuje i deserializuje z pliku... niby to zgodne z wzorcem Active Record, ale z drugiej strony, to antywzorzec łamiący SRP.

1 użytkowników online, w tym zalogowanych: 0, gości: 1