是否有办法通过shareName获得Xamarin.Essentials.Preferences &



我使用Xamarin。为我的应用程序存储用户首选项的必需品。我有一个场景,我想存储多个首选项我使用"sharedName">

const string bShare = "BreakfastPrefs";
private bool _eggs;
private bool _bacon;
public bool Eggs
{
get
{
//load from prefs
return _eggs= Preferences.Get("EggSwitch", false, bShare );
}
set
{
//save to prefs
_eggs= value;
Preferences.Set("Eggswitch", value, bShare );
}
}
public bool Bacon
{
get
{
//load from prefs
return _bacon= Preferences.Get("BaconSwitch", false, bShare );
}
set
{
//save to prefs
_bacon= value;
Preferences.Set("BaconSwitch", value, bShare );
}
}

我希望以后我可以做一些像"preferences . getbysharename ("bShare")来检索该共享中的所有首选项。但看起来我只需要逐个从首选项中获取每个对象。如果我不能这样做,我真的不确定首选项的shareName属性的目的。

下面是Xamarin.Essentials.Preferences.

中的一个Get方法示例。public static string Get(string key, string defaultValue, string sharedName);

任何帮助将不胜感激,我能想到的唯一一件事就是将我的鸡蛋和培根存储在一个'首选项'中作为分隔列表,然后当我想检索它时将其拆分为一个集合....但这感觉有点恶心。

欢迎任何输入。谢谢!

不应该将sharedName参数用作对内部首选项进行分类的方法。它的目的是在整个操作系统范围内共享首选项,以便一个应用程序可以使用另一个应用程序设置的首选项。

至于对您的首选项进行分类,如果您的要求很简单,您可以序列化您的值来存储一个以bShare作为键的字符串,而不指定sharedName。否则,我建议使用实际的本地数据库。

对于感兴趣的人,我通过序列化我自己的Dictionary对象来解决这个问题,该对象将键和值存储为JSON。然后将其存储在Xamarin.Essentials.Preferences对象中。然后根据需要进行反序列化。

谢谢你的输入。