quarta-feira, 2 de fevereiro de 2011

Utilizando IsolatedStorage no Silverlight

Existem situações onde é necessário armazenar informações na estação do cliente.
A classe abaixo permite acessar esta área através do Silverlight, onde poderão ser salvos arquivos, e objetos de configuração, como ID do usuário logado, etc.…

   1: using System;
   2: using System.Net;
   3: using System.IO.IsolatedStorage;
   4: using System.IO;
   5: using System.Runtime.Serialization;
   6:  
   7: namespace MyLibrary.UI.SL
   8: {
   9:  
  10:     /// <summary>
  11:     /// Classe de gerenciamento da Isolated Storage
  12:     /// </summary>
  13:     public static class IsolatedStorageCacheManager
  14:     {
  15:         /// <summary>
  16:         /// Persistem em um arquivo na Isolated Storage o conteúdo serializado do objeto
  17:         /// </summary>
  18:         /// <typeparam name="T">Tipo do Objeto</typeparam>
  19:         /// <param name="filename">Nome do Arquivo </param>
  20:         /// <param name="obj">objeto a ser salvo na Isolated Storage</param>
  21:         public static void Store<T>(string filename, T obj)
  22:         {
  23:             using (var appStore = IsolatedStorageFile.GetUserStoreForApplication())
  24:             {
  25:                 using (var fileStream = appStore.OpenFile(filename, FileMode.Create))
  26:                 {
  27:                     var serializer = new DataContractSerializer(typeof(T));
  28:                     serializer.WriteObject(fileStream, obj);
  29:                 }
  30:             }
  31:         }
  32:  
  33:         /// <summary>
  34:         /// Retorna o objeto que esta serializado no arquivo da Isolated Storage
  35:         /// </summary>
  36:         /// <typeparam name="T">Tipo do Objeto</typeparam>
  37:         /// <param name="filename">nome do Arquivo </param>
  38:         /// <returns></returns>
  39:         public static T Retrieve<T> (string filename)
  40:         {
  41:             T obj = default(T);
  42:             using (var appStore = IsolatedStorageFile.GetUserStoreForApplication())
  43:             {
  44:                 if (appStore.FileExists(filename))
  45:                 {
  46:                     using (var fileStream = appStore.OpenFile(filename, FileMode.Open))
  47:                     {
  48:                         var serializer = new DataContractSerializer(typeof(T));
  49:                         obj = (T)serializer.ReadObject(fileStream);
  50:                     }
  51:                 }
  52:                 return obj;
  53:             }
  54:         }
  55:  
  56:         /// <summary>
  57:         /// Salva o objeto nas configurações do site (SiteSettings)
  58:         /// </summary>
  59:         /// <typeparam name="T">Tipo do Objeto</typeparam>
  60:         /// <param name="chave">chave de acesso a configuração</param>
  61:         /// <param name="valor">objeto a ser salvo</param>
  62:         public static void AddSetting<T>(string chave, T valor)
  63:         {
  64:             if (!IsolatedStorageSettings.SiteSettings.Contains(chave))
  65:                 IsolatedStorageSettings.SiteSettings.Add(chave, valor);
  66:             else
  67:                 IsolatedStorageSettings.SiteSettings[chave] =valor;
  68:         }
  69:  
  70:         /// <summary>
  71:         /// Obtem objeto das configurações do site (SiteSettings)
  72:         /// </summary>
  73:         /// <typeparam name="T">Tipo do Objeto</typeparam>
  74:         /// <param name="chave">chave de acesso a configuração</param>
  75:         /// <returns></returns>
  76:         public static  T GetSetting<T>(string chave)
  77:         {
  78:             if (IsolatedStorageSettings.SiteSettings.Contains(chave))
  79:                 return (T)IsolatedStorageSettings.SiteSettings[chave];
  80:             else
  81:                 return default(T);
  82:         }
  83:     }
  84: }


Gostou? Não Gostou? Então comenta ai!

Nenhum comentário:

Postar um comentário