internal void Load() { try { IsolatedStorageFile userStore = IsolatedStorageFile.GetUserStoreForAssembly(); //Si no hay datos para este usuario if (userStore.GetFileNames(DATABASE_CONFIG_FILE).Length == 0) { //Limpio el diccionario por si contien algo //_Connections.Clear(); return; } //Abro el stream con la informacion serializada del diccionario desde el IsolatedStorage IsolatedStorageFileStream userStream = new IsolatedStorageFileStream(DATABASE_CONFIG_FILE, FileMode.Open, userStore); _Connections = DeSerializeDictionary(userStream); } catch (FileNotFoundException)//si ocurre algun error construyo una coneccion por defecto { CnnString cnn = new CnnString(); cnn.DataSource = "DataSourceEmty"; cnn.Name = "ConnectionName"; cnn.Password = String.Empty; cnn.User = "******"; cnn.WindowsAutentification = true; cnn.InitialCatalog = String.Empty; _Connections.Add(cnn); Save(); } }
/// <summary> /// Deserializa: Convierte el stream a una lista de coneciones /// </summary> /// <param name="fs"></param> /// <param name="dict"></param> CnnStringList DeSerializeDictionary(FileStream fs) { CnnStringList wCnnStringList; // Crea un BinaryFormatter para realizar la serializacion BinaryFormatter bf = new BinaryFormatter(); try { //Convierte el stream a un CnnStringList wCnnStringList = (CnnStringList)bf.Deserialize(fs); } catch (System.Runtime.Serialization.SerializationException) { wCnnStringList = new CnnStringList(); } finally { fs.Close(); } return(wCnnStringList); }
/// <summary> /// Serializa en binario el la lista de conecciones /// </summary> /// <param name="fs"></param> /// <param name="dict"></param> private static void SerializeDictionary(FileStream fs, CnnStringList dict) { // Create a BinaryFormatter object to perform the serialization BinaryFormatter bf = new BinaryFormatter(); // Use the BinaryFormatter object to serialize the data to the file bf.Serialize(fs, dict); // Close the file fs.Close(); }