Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 序列化多个对象 类AppDataManager { 公共静态异步任务SaveAsync(T数据,字符串文件名) { StorageFile file=Wait ApplicationData.Current.LocalFolder.CreateFileAsync(文件名, CreationCollisionOption.GenerateUniqueName); var stream=await file.OpenStreamForWriteAsync(); var serializer=新的DataContractSerializer(typeof(T)); serializer.WriteObject(流、数据); 等待stream.FlushAsync(); } 公共静态异步任务RestoreAsync(字符串文件名) { 尝试 { var file=wait ApplicationData.Current.LocalFolder.GetFileAsync(文件名); var instream=await file.OpenStreamForReadAsync(); var serializer=新的DataContractSerializer(typeof(T)); return(T)serializer.ReadObject(instream); } 捕获(例外) { 返回默认值(T); } } } 受保护的异步重写无效OnNavigatedTo(NavigationEventArgs e) { 等待AskUserToLocalDataAsync(); 如果(使用本地数据) { SomethingGoesher=等待AppDataManager.RestoreAsync(文件名); } }_C#_.net_Windows 8 - Fatal编程技术网

C# 序列化多个对象 类AppDataManager { 公共静态异步任务SaveAsync(T数据,字符串文件名) { StorageFile file=Wait ApplicationData.Current.LocalFolder.CreateFileAsync(文件名, CreationCollisionOption.GenerateUniqueName); var stream=await file.OpenStreamForWriteAsync(); var serializer=新的DataContractSerializer(typeof(T)); serializer.WriteObject(流、数据); 等待stream.FlushAsync(); } 公共静态异步任务RestoreAsync(字符串文件名) { 尝试 { var file=wait ApplicationData.Current.LocalFolder.GetFileAsync(文件名); var instream=await file.OpenStreamForReadAsync(); var serializer=新的DataContractSerializer(typeof(T)); return(T)serializer.ReadObject(instream); } 捕获(例外) { 返回默认值(T); } } } 受保护的异步重写无效OnNavigatedTo(NavigationEventArgs e) { 等待AskUserToLocalDataAsync(); 如果(使用本地数据) { SomethingGoesher=等待AppDataManager.RestoreAsync(文件名); } }

C# 序列化多个对象 类AppDataManager { 公共静态异步任务SaveAsync(T数据,字符串文件名) { StorageFile file=Wait ApplicationData.Current.LocalFolder.CreateFileAsync(文件名, CreationCollisionOption.GenerateUniqueName); var stream=await file.OpenStreamForWriteAsync(); var serializer=新的DataContractSerializer(typeof(T)); serializer.WriteObject(流、数据); 等待stream.FlushAsync(); } 公共静态异步任务RestoreAsync(字符串文件名) { 尝试 { var file=wait ApplicationData.Current.LocalFolder.GetFileAsync(文件名); var instream=await file.OpenStreamForReadAsync(); var serializer=新的DataContractSerializer(typeof(T)); return(T)serializer.ReadObject(instream); } 捕获(例外) { 返回默认值(T); } } } 受保护的异步重写无效OnNavigatedTo(NavigationEventArgs e) { 等待AskUserToLocalDataAsync(); 如果(使用本地数据) { SomethingGoesher=等待AppDataManager.RestoreAsync(文件名); } },c#,.net,windows-8,C#,.net,Windows 8,代码运行良好,但它只返回一个对象,我希望编写多个对象并将其作为observableCollection检索,以将其绑定到GridView。GenerateUniqueName将附加多个对象 如何储存?以及如何检索它?创建一个带有属性的类,该属性将保存您的集合。然后序列化该类。我建议为对象创建一个集合类 例如,小部件对象: class AppDataManager { public static async Task SaveAsync<T>(T data, string fi

代码运行良好,但它只返回一个对象,我希望编写多个对象并将其作为observableCollection检索,以将其绑定到GridView。GenerateUniqueName将附加多个对象


如何储存?以及如何检索它?

创建一个带有属性的类,该属性将保存您的集合。然后序列化该类。

我建议为对象创建一个
集合

例如,
小部件
对象:

class AppDataManager
{
    public static async Task SaveAsync<T>(T data, string fileName)
    {
        StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName, 
            CreationCollisionOption.GenerateUniqueName);
        var stream = await file.OpenStreamForWriteAsync();
        var serializer = new DataContractSerializer(typeof(T));
        serializer.WriteObject(stream ,data);
        await stream.FlushAsync();
    }

    public static async Task<T> RestoreAsync<T>(string fileNa me)
    {
        try
        {
            var file = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);

            var instream = await file.OpenStreamForReadAsync();
            var serializer = new DataContractSerializer(typeof(T));
            return (T)serializer.ReadObject(instream);
        }
        catch (Exception)
        {
            return default(T);
        }
    }
}


    protected async override void OnNavigatedTo(NavigationEventArgs e)
    {
        await AskUserToLocalDataAsync();

        if (useLocalData)
        {
           SomethingGoesHere  = await AppDataManager.RestoreAsync<UserData>(fileName);
        }
    }
然后,您可以创建一个
WidgetCollection
类:

[DataContract]
public class Widget
{
  [DataMember]
  public string Name { get; set; }

  [DataMember]
  public int Value { get; set; }
}
[DataContract]
公共类WidgetCollection
{
[数据成员]
公共列表小部件{get;set;}
}
您可以对
WidgetCollection
进行序列化/反序列化,然后通过
foreach
将其添加到
observedcollection


另外,使用语句将您的
IDisposable
对象(如
irandomaccesstream
)包装在
中,以便正确处理它们。

不要接受异常
[DataContract]
public class WidgetCollection
{
  [DataMember]
  public List<Widget> Widgets { get; set; }
}