http://whydoidoit.com/에서 Silverlight 시리얼 라이저를 사용하고 개체를 격리 된 저장소로 직렬화합니다. 그것의 진짜로 좋은 serializer - 그것의 빠르고 파일은 작습니다. 저장 및 검색하는 코드는
public static void SaveFile(string filename, object serializableObject, Type type)
{
using (IsolatedStorageFile userStore = IsolatedStorageFile.GetUserStoreForApplication())
{
if (userStore.FileExists(filename))
{
userStore.DeleteFile(filename);
}
using (IsolatedStorageFileStream stream = userStore.CreateFile(filename))
{
SilverlightSerializer.Serialize(serializableObject, stream);
}
}
}
public static object LoadSerializedObjectFromFile(string filename, Type type)
{
using (IsolatedStorageFile userStore =
IsolatedStorageFile.GetUserStoreForApplication())
{
if (userStore.FileExists(filename))
{
using (IsolatedStorageFileStream stream = userStore.OpenFile(filename, FileMode.Open))
{
return SilverlightSerializer.Deserialize(stream);
}
}
}
return null;
}
입니다. 일반적으로 저장소 (패턴)에 개별 파일을 래핑합니다. 예를 들어 내 Good Deal 앱에서 DealRepository가 있습니다.
private static IDeal LoadRecentDeal()
{
IDeal savedDeals = IsolatedStorageHelper.LoadSerializedObjectFromFile(RecentDealFileName, typeof(Deal)) as Deal;
if (savedDeals != null)
{
return savedDeals;
}
else
{
return Deal.CreateNewDeal(RecentDealFileName);
}
}
내부는 방법이 같은 것입니다 저장 :
public void Save(IDeal deal)
{
deal.LastModifiedDate = DateTime.Now;
//
string fileName;
if (deal.Name == RecentDealFileName)
{
fileName = RecentDealFileName;
}
else
{
fileName = SavedDirectoryName + Path.DirectorySeparatorChar + deal.ID.ToString();
}
IsolatedStorageHelper.SaveFile(fileName, deal, typeof(IDeal));
}
그리고 수행하는 데 사용되는 IsolatedStorageHelper 및 저장소에 여러 가지 다른 방법이 있습니다 여기에 표시된 것처럼 그 저장소에서 나는 정적 부하 방법이 같은 것들이 여러 파일에 목록을 저장하고 그들을 반환 ... 등 모든 귀하의 요구에 따라 달라집니다 -하지만 Silverlight Serializer를 체크 아웃하는 것이 좋습니다, 그것은 매우 간단합니다.