Serializacja XML

S2
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 lat
  • Postów:91
0

Mam taki kodzik na serializację

Kopiuj
namespace sklep
{
      public partial class baza_klientow : Window
    {
        
        private List<klienci> m_klienciList = null;
        public klienci ss = new klienci(1, "a", "", "", "", "", "", 1, "", "", "");

        public baza_klientow()
        {
            InitializeComponent();
            InitBinding();
        }

        private void InitBinding()
        {
            m_klienciList = new List<klienci>();
            m_klienciList.Add(new klienci(1, "a", "", "", "", "", "", 1, "", "", ""));
            dataGrid_klienci.ItemsSource = m_klienciList;
        }

         public static T Load<T>(string FileSpec)
        {
            XmlSerializer formatter = new XmlSerializer(typeof(T));

            using (FileStream aFile = new FileStream(FileSpec, FileMode.Open))
            {
                byte[] buffer = new byte[aFile.Length];
                aFile.Read(buffer, 0, (int)aFile.Length);

                using (MemoryStream stream = new MemoryStream(buffer))
                {
                    return (T)formatter.Deserialize(stream);
                }
            }

        }

        public static void Save<T>(T ToSerialize, string FileSpec)
        {
            Directory.CreateDirectory(FileSpec.Substring(0, FileSpec.LastIndexOf('\\')));
            FileStream outFile = File.Create(FileSpec);
            XmlSerializer formatter = new XmlSerializer(typeof(T));

            formatter.Serialize(outFile, ToSerialize);
            outFile.Close();
        }

        private void btn_dodajKlienta_Click(object sender, RoutedEventArgs e)
        {
        }

        private void btn_wyszukajKlienta_Click(object sender, RoutedEventArgs e)
        {
            Save<klienci>(ss, "klienci.xml");
        }

        private void btn_modyfikujKlienta_Click(object sender, RoutedEventArgs e)
        {

        }
    }
}
} 

i niestety jest błąd z którym nie mogę sobie dać rady, a mianowicie "public klienci ss = new klienci..." podkreśla to ss i nie chce mi przyjąć jako public a private znów nie może być

edytowany 1x, ostatnio: spin2015
Pixello
  • Rejestracja:około 10 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Podkarpacie
  • Postów:448
1

A co ci mówi Error List?

S2
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 6 lat
  • Postów:91
0

Pole "klienci" jest mniej dostępne niż pole "baza_klientow.ss"

Najdziwniejsze że mam ten kod w dwóch różnych plikach i w jednym jest ok a w drugim nie.

NE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 8 lat
  • Postów:186
0

Czyli błąd nie jest w żadnej serializacji, tylko w tym, co teraz dopisałeś - dostępność klasy klienci. baza_klientow jest klasą publiczną, ss jest polem publicznym, więc cały świat może sobie z niego korzystać. Natomiast klasa klienci najwyraźniej nie jest publiczna, więc klasy niemające dostępu do niej nie umiałyby jednak skorzystać z pola ss, bo nie wiedzą, jakiego jest typu.


(konto nieaktywne)
Pixello
  • Rejestracja:około 10 lat
  • Ostatnio:5 miesięcy
  • Lokalizacja:Podkarpacie
  • Postów:448
2

Wujek dobra rada: Weź sobie wyrzuć ten pakiet lokalizacyjny z Visualla, to będzie ci dużo łatwiej szukać rozwiązań błędów, np na stackoverflow.com, przez co nie będziesz musiał tracić czasu na stanie w miejscu z problemami.

edytowany 1x, ostatnio: Pixello

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.