Klasa statyczna a serializacja i zapis

Klasa statyczna a serializacja i zapis
Zulowski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 81
1

Witam, natknąłem się na problem związany z klasami statycznymi, mianowicie mam klasę statyczną do przechowywania ustawień aplikacji, zastanawiam się czy da się jakoś zrobić z niej obiekt by go zserializować i zapisać do pliku,
przykładowo :

Kopiuj
[Serializable]
public static class Config
{
   private static bool _useCompression = false;
   private static bool _dontShowConsole = false;
   private static String _userName = "zulowski";
   private static String _userPass = "password";
   private static string configFileName = "config";

   private static void SerializeObject()
   {
      Stream stream = File.Open(configFileName, FileMode.Create);
      BinaryFormatter bFormatter = new BinaryFormatter();
      bFormatter.Serialize(stream, TUTAJ_CHCE_OBIEKT);
      stream.Close();
   }
}

Zastanawiam się, co podać w miejsce TUTAJ_CHCE_OBIEKT

maszynaz
  • Rejestracja: dni
  • Ostatnio: dni
0

Możesz użyć refleksji:

Kopiuj
[Serializable]
class koza
{

      public Type type;
      public FieldInfo[] fields;    
      public MethodInfo[] methods;
      public koza(Type type)
       {
           this.type = type;
           fields = type.GetFields();  
           methods = type.GetMethods();
       }

}

Teraz taki obiekt "k" możesz serializować:

Kopiuj
koza k = new koza(typeof(Config));
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Najsensowniej będzie nie używać klasy statycznej.

Zulowski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 81
0

Jak o tym myślę, to faktycznie trochę nie za fajne rozwiązania, można by stworzyć klasę pomocniczą, ale w tedy to też się mija z celem, zobaczę jeszcze co by mi dała implementacja tego jako singleton.

Edit, nie wymyśliłem nic ciekawego, chciałbym osiągnąć taki interfejs do zarzadzania konfiguracją:

Kopiuj
string uzytkownik = Config.Uzytkownik; //get
int liczba = Config.Liczba; // get

//.. za 7 górami
Config.Uzytkownik = "krasnoludek"; //set
//przy wychodzeniu z ustawien event Save i ta powyższa klasa Config(?static?) się serializuje i zapisuje do pliku
//i przy założeniu, że wszędzie mam dostęp do Config, i ze ma te same dane niezaleznie od miejsca, bez zabezpieczania na wątki afkors

 

co proponujecie aby osiągnąć taki przykładowy cel?

siararadek
  • Rejestracja: dni
  • Ostatnio: dni
0

Najsensowniej będzie nie używać klasy statycznej.

Wrzuć to jako obiekt do jakiejś innej klasy statycznej. I wtedy będziesz mieć po problemie.

Poza tym używaj właściwości, a nie pól.

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.