• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C#] Deserializacja modelu z formy binarnej

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
183 wizyt
pytanie zadane 30 stycznia 2018 w C# przez Paweł Antyporowicz Stary wyjadacz (11,470 p.)
edycja 30 stycznia 2018 przez Paweł Antyporowicz

Witam,

mam problem z deserializacją. Wszystko fajnie działa tylko chciałbym zrobić tak, żeby miał dostęp do wszystkich pól z deserializowanego obietku.

Oto mój kod:

 //deserializowanie obiektu       
public ICollection<T> Deserialization<T>()
{
      var fs = new FileStream(this.FileName, FileMode.Open);
      BinaryFormatter bf = new BinaryFormatter();
      List<T> list = new List<T>();
      while (fs.Position != fs.Length)
      {
           var deserialized = (T)bf.Deserialize(fs);
           list.Add(deserialized);
      }
      fs.Close();
      return list;
}


//Wyświetlenie deserializowanego obietku, 
//tylko chciałbym, żebym miał dostęp do pól pzw oraz specjalizacja z modelu doktor. 
//A jak dam tym Employee w serializacji to tylko mam dostęp do pól z modelu Employee
//a jak wpiszę typ Doktor to wyskakuje mi wyjątek, że nie mogę się odwołać do obietku.

var result = create.Deserialization<Employee>();
Console.WriteLine("List pracowników");
foreach (var item in result)
 {
      Console.WriteLine($"#Nazwa użytkownika: {item.Username}  Imię: {item.FirstName} -- Naziwsko: {item.LastName} -- Posada: {item.Type} -- Specjalizacja: {item.Specialization}");
 }

//Model pracownik
    [Serializable]
    public class Employee : IEmployees
    {
        public enum TypeOfEmployee
        {
            admin,
            doktor,
            pielęgniarka
        }

        public string Username { get; set; }
        public string Password { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public long Pesel { get; set; }
        public TypeOfEmployee? Type { get; set; }
     }

//Model doktor
    [Serializable]
    public class Doktor : Employee
    {
        public enum SpecializationEnum
        {
            laryngolog,
            kardiolog,
            urolog,
            neurolog
        }

        public string Pzw { get; set; }
        public SpecializationEnum? Specialization { get; set; }
   }

//Interfejs do pracowników
    public interface IEmployees
    {
        string Username { get; set; }
        string Password { get; set; }
        string FirstName { get; set; }
        string LastName { get; set; }
        long Pesel { get; set; }
        TypeOfEmployee? Type { get; set; }
    }



 

komentarz 30 stycznia 2018 przez Paweł Antyporowicz Stary wyjadacz (11,470 p.)
Myślałem, że jak użyję klasy Doktor po dziedziczeniu będę miał dostęp do pól z modelu Employee a tu lipa. Może ktoś podpowie jak to zrobić dobrze w paradygmacie programowania obiektowego.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 186 wizyt
pytanie zadane 25 maja 2024 w C# przez lukas1231233 Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 1,014 wizyt
pytanie zadane 25 grudnia 2015 w Java przez pulpet112 Użytkownik (760 p.)
0 głosów
2 odpowiedzi 179 wizyt
pytanie zadane 24 lipca 2017 w C# przez jankustosz1 Nałogowiec (36,960 p.)

93,430 zapytań

142,427 odpowiedzi

322,652 komentarzy

62,792 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...