在 C# 中存储设置的最佳方式是什么 PCL

What is the best way to store settings in C# PCL

我是跨平台 C# 应用程序的开发人员,目前面向 Windows Store 和 Xamarin 环境。我有一个所有应用程序都引用的共享便携式 class 库 (PCL),我在其中定义核心应用程序逻辑和算法,包括存储、网络、数据库和设置。

我需要的是一种更智能的设置存储方式。我不想使用任何键值方法或 XML 文件,因为这些方法完全过时了,那么这在 C# 中很容易实现:

[SettingsNode("app_settings")]
class AppSettings
{
    public double SomeNumber;
    public object SomeSerializable;

    public byte[] SomeBytes;

    [SettingsNode("custom_setting_name")]//just specifying XML/etc node name with SettingsNode attribute
    public string SomeKey;
}

class x
{
    void y()
    {
        AppSettings superSettingsSolution = Engine.LoadEntry<AppSettings>("test.xml");
        superSettingsSolution.SomeBytes = new byte[10];
        superSettingsSolution.SomeNumber = 4.6d;
        superSettingsSolution.SomeSerializable = new object();//[Serializable] class
        Engine.SaveEntry<AppSettings>("test.xml", superSettingsSolution);
    }
}

我打算使用 PCLStorage 包进行跨平台存储,所以我不会在我的代码中引用 System.Windows.Storage,我也不想。

我的问题:C# 的 PCL 的代码示例 library/project/package 是否有任何接近的内容?很抱歉,如果我问的是一些琐碎的问题,但我还没有经验 'portable'/windows8 程序员。

    using System.Xml.Serialization;
    using PCLStorage;
    using System.IO;

    public virtual async Task<T> LoadSettings<T>(IFile file = null)
        where T : IApplicationSettings
    {
        // File
        if (file == null)
            file = DefaultSettingsFile;

        // Open file
        using (Stream fileStream = await file.OpenAsync(FileAccess.Read))
        {
            var xmls = new XmlSerializer(typeof(T));
            return (T)xmls.Deserialize(fileStream);
        }
    }

    public virtual async Task SaveSettings(object settings, IFile file = null)
    {
        // File
        if (file == null)
            file = DefaultSettingsFile;

        // Open file
        using (Stream fileStream = await file.OpenAsync(FileAccess.ReadAndWrite))
        {
            var xmls = new XmlSerializer(settings.GetType());
            xmls.Serialize(fileStream, settings);
        }
    }