WIN RT中是否存在二进制序列化程序?

Dar*_*Zon 5 c# serialization microsoft-metro windows-runtime

我正在寻找二进制序列化器,因为在我的应用程序中,用户可以根据需要发现许多项目.想象一下,用户已发现超过100个项目(这些项目是从互联网上下载的),当应用程序暂停时,应用程序找不到最后一项,因为不存在.

在应用程序发生这是因为我总是加载前10个项目.但是在地铁原则中说,应用程序需要恢复所有内容..因此我在考虑使用二进制序列化程序来快速保存这些对象.但我找不到任何可以帮助我的课程.

编辑:

public abstract class BaseItem
{
    ...

    public BaseGroup Group { get; set;}
}

public abstract class BaseGroup
{
    public IEnumerable<BaseItem> Items { get; set; }
}

public sealed class FeedDataGroup
{
    ...
}

public sealed class FeedItem
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我计划序列化一个ObservableCollection.如果我使用JSON,那么构建我的类的方式会有任何问题吗?

Fen*_*uan 6

Microsoft示例代码使用DataContractSerializer

        // Serialize the session state synchronously to avoid asynchronous access to shared
        // state
        MemoryStream sessionData = new MemoryStream();
        DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary<string, object>), _knownTypes);
        serializer.WriteObject(sessionData, _sessionState);

        // Get an output stream for the SessionState file and write the state asynchronously
        StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);
        using (Stream fileStream = await file.OpenStreamForWriteAsync())
        {
            sessionData.Seek(0, SeekOrigin.Begin);
            await sessionData.CopyToAsync(fileStream);
            await fileStream.FlushAsync();
        }
Run Code Online (Sandbox Code Playgroud)