Sauvegarde de configuration par isolatedstoragefile

Description

Permet de sauver des preferences utilisateur ou des configurations sans se soucier de lieux de stockage. On Serialise l'objet et on la sauve grace a un IsolatedStorageFile de la classe Store.

Source / Exemple :


//File: Configuration.cs
using System;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace Program
{
	[Serializable]
	class Configuration : Store
	{
		private int m_iBuffer = 0;
		public int Buffer{get {return this.m_iBuffer;}set{this.m_iBuffer = value;}}
		
		public Configuration() {}
	}	
}
//File: Program.cs
using System;

namespace Program
{
	class Program
	{
		public static void Main(string[] args)
		{
			try
			{
				Configuration cfg1 = new Configuration();
				cfg1.Buffer = 1;
				Configuration.Save(cfg1);
				Configuration cfg11 = Configuration.Load();
				Console.WriteLine("cfg1.Buffer = "+cfg1.Buffer);
				Console.WriteLine("cfg11.Buffer = "+cfg11.Buffer);

				Configuration cfg2 = new Configuration();
				cfg2.Buffer = 2;
				cfg2.Save();
				Configuration cfg22 = Configuration.Load();
				Console.WriteLine("cfg2.Buffer = "+cfg2.Buffer);
				Console.WriteLine("cfg22.Buffer = "+cfg22.Buffer);
			} catch ( System.Exception Ex ) { Console.WriteLine( Ex.Message ); }
		}
	}	
}

//File: Store.cs
using System;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace Program
{
	[Serializable]
	class Store
	{
		
		public Store() {}
				
		public static Configuration Load()
		{
			try
			{
				IsolatedStorageFile  isf =  IsolatedStorageFile. GetStore( IsolatedStorageScope.User | IsolatedStorageScope.Assembly, null, null);
				Stream reader =  new IsolatedStorageFileStream("configuration.xml", FileMode.Open,isf);
				IFormatter formatter = new BinaryFormatter();
				Configuration _Cfg = (Configuration) formatter.Deserialize(reader);
				reader.Close();
				return _Cfg;
			} catch ( System.Exception Ex ) { Console.WriteLine( Ex.Message ); Configuration _Cfg = new Configuration(); return _Cfg;}
		}

		public bool Save()
		{
			try
			{
				IsolatedStorageFile  isf = IsolatedStorageFile.GetStore( IsolatedStorageScope.User |  IsolatedStorageScope.Assembly, null, null);
				Stream writer =  new IsolatedStorageFileStream("configuration.xml", FileMode.Create,isf);
				IFormatter formatter = new BinaryFormatter();
				formatter.Serialize(writer,this);
				writer.Close();
				return true;
			} catch ( System.Exception Ex ) { Console.WriteLine( Ex.Message ); return false; }
		}
		
		public static bool Save(Configuration Cfg)
		{
			try
			{
				IsolatedStorageFile  isf = IsolatedStorageFile.GetStore( IsolatedStorageScope.User |  IsolatedStorageScope.Assembly, null, null);
				Stream writer =  new IsolatedStorageFileStream("configuration.xml", FileMode.Create,isf);
				IFormatter formatter = new BinaryFormatter();
				formatter.Serialize(writer,Cfg);
				writer.Close();
				return true;
			} catch ( System.Exception Ex ) { Console.WriteLine( Ex.Message ); return false; }
		}
		
	}	
}
/*
pour compiler:
- Ajouter au path : C:\Program Files\Microsoft.NET\SDK\v1.1\Bin (a adapter selon la version du framework)
	- executer "sdkvars.bat"
	- executer "csc /out:bin\debug\config-test.exe class\*.cs /debug"

pour executer:
- executer "bin\debug\config-test.exe"

  • /

Conclusion :


Rien de special cote explications. Un simple heritage pour sauver les informations de la classe.

Poster vos feedbacks pour ameliorations.

Merci

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.