写/读类的最简单方法

时间:2014-04-22 17:56:51

标签: c# windows-phone-8 visual-studio-2013

我是C#和Windows Phone开发的新手,我需要为学校项目做app 我有简单的课程,我希望保存它以便在下次开始申请时可以访问 最好(也是最简单)的方法是什么?使用文件,数据库或其他一些应用程序内存?

这是我的班级:

public class Place
{
    private string name;
    private string description;
    private int distance;
    private bool enabled;
    private GeoCoordinate coordinates;
}

我需要存储多个类的实例。

2 个答案:

答案 0 :(得分:2)

没有“最佳”的方式来做到这一点;这取决于你将如何使用它。

一种简单的方法是使用序列化,XML,JSON,二进制或任何你想要的。我个人喜欢JSON,因为它非常轻巧,易于阅读。您可以使用JSON.NET库将对象序列化为JSON。

例如,如果要将Place的集合序列化为文件,可以执行以下操作:

static async Task SavePlacesAsync(ICollection<Place> places)
{
    var serializer = new JsonSerializer();
    var folder = ApplicationData.Current.LocalFolder;
    var file = await folder.CreateFileAsync("places.json", CreationCollisionOption.ReplaceExisting);
    using (var stream = await file.OpenStreamForWriteAsync())
    using (var writer = new StreamWriter(stream))
    {
        serializer.Serialize(writer, places);
    }
}

并从文件中读回来:

static async Task<ICollection<Place>> LoadPlacesAsync()
{
    try
    {
        var serializer = new JsonSerializer();
        var folder = ApplicationData.Current.LocalFolder;
        var file = await folder.GetFileAsync("places.json");
        using (var stream = await file.OpenStreamForReadAsync())
        using (var reader = new StreamReader(stream))
        using (var jReader = new JsonTextReader(reader))
        {
            return serializer.Deserialize<ICollection<Place>>(jReader, places);
        }
    }
    catch(FileNotFoundException)
    {
        return new List<Place>();
    }
}

答案 1 :(得分:1)

我认为使持久化对象的最简单方法是将它们存储在文件中。但是,由于IO操作所花费的时间,安全性低等原因,这不是最好的方法。

这里有一个很好的例子:

How to quickly save/load class instance to file