C# 独立存储在windows phone应用程序上不起作用
我有一个独立的存储功能来写入存储:C# 独立存储在windows phone应用程序上不起作用,c#,silverlight,mvvm,windows-phone-8,isolatedstorage,C#,Silverlight,Mvvm,Windows Phone 8,Isolatedstorage,我有一个独立的存储功能来写入存储: public static void WriteIsolatedStorage(object ObjectToStore, StorageType Key) { using (var storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication()) using (var storageFile = storage.CreateFile(K
public static void WriteIsolatedStorage(object ObjectToStore, StorageType Key)
{
using (var storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())
using (var storageFile = storage.CreateFile(Key.ToString()))
{
var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(string));
switch (Key)
{
case StorageType.UserCredentials:
xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFUserCredentials));
break;
case StorageType.BackgroundAgentUserCredentials:
xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFUserCredentials));
break;
case StorageType.UserProfile:
xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFUser));
break;
case StorageType.InboxItems:
xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection<dmWFInboxItem>));
break;
case StorageType.InboxTileItems:
xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection<dmInboxTileInfo>));
break;
case StorageType.DocumentHeaders:
xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(ObservableCollection<dmWFDocumentHeader>));
break;
case StorageType.SearchCache:
xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(List<List<dmWFDocumentHeader>>));
break;
case StorageType.FacebookProfile:
xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmFBUserProfile));
break;
case
StorageType.BaseUrl:
xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFURLSetting));
break;
default:
break;
}
xmlSerializer.Serialize(storageFile, ObjectToStore);
}
}
public static dmWFURLSetting GetBaseUrl(StorageType Key)
{
try
{
using (var storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication())
{
using (var storageFile = storage.OpenFile(Key.ToString(), System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite))
{
dmWFURLSetting result = new dmWFURLSetting();
var xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(dmWFURLSetting));
return (dmWFURLSetting)xmlSerializer.Deserialize(storageFile);
}
}
}
catch (Exception)
{
return null;
}
}
好的,下面是我如何从M前端调用这些方法,然后是viemodel,我正在使用mvvm fr这个手机应用程序。
前端呼叫:
public string URL = (WorkflowBase.BaseURL != null ? WorkflowBase.BaseURL.ToString() : "");
以下是后端中的公共属性:
public static string BaseURL = AccTech.WP8.Helpers.IsolatedStorage.GetBaseUrl(Helpers.IsolatedStorage.StorageType.BaseUrl).BaseUrl.ToString();
好吧,奇怪的是,我知道当我在完全关闭后启动模拟器时,隔离存储(缓存)是完全干净的,所以如果调用这个函数,我将得到一个空返回。。。正如你在我的前端调用中看到的,我做了一个内联调用,如果我得到一个空值,那么就把它设为“”。这是我运行时得到的错误。
PS:如果我将URL设置为静态,应用程序将正常工作
好的,下面是我尝试逐步完成整个过程时遇到的错误:
我身体上无法让这个工作,我已经尝试了谷歌提供的一切。。。但是什么也没发生,如果有人能给我一个答案,我会很高兴的
如果您需要更多数据或信息,请告诉我WorkflowBase.BaseURL!=null,它所指向的这个workflowbase类从未将公共变量更改为它获得的数据,所以这就是为什么会出现错误
所以,是的,这是本周最大的错误P
是的,我也得到了这种类型的异常。但此异常背后的区域是您的独立存储不包含您要访问的密钥,因此如果有任何现金访问,请首先检查独立存储是否包含。在Visual studio中,还可以使用独立存储对象中的断点检查独立存储中有多少密钥。
检查DMWFURLSETING具有(反)序列化的正确属性和公共构造函数。