Klasa statyczna a serializacja i zapis

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 :

[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

0

Możesz użyć refleksji:

[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ć:

koza k = new koza(typeof(Config));
0

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

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ą:

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?

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.

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