public class PreferenceManager
{
private static PreferenceManager _instance = null;
private static readonly object _lock = new object();
private PreferenceManager() { }
public static PreferenceManager Instance
{
get
{
lock (_lock)
{
if (_instance == null)
_instance = new PreferenceManager();
return _instance;
}
}
}
public void SetPreference<T>(string key, T value)
{
Preferences.Set(key, value);
}
public T GetPreference<T>(string key)
{
object value = Preferences.Get(key, null);
return (T)Convert.ChangeType(value, typeof(T));
}
}
我想做一个 Package 类来管理所有关于Xamarin.Essentials.Preferences的进程。
在Essentials类中,有很多不同类型的覆盖用于获取/设置。
所以,我尝试用泛型和set value来改变返回值,因为我认为它看起来更简单。
但是,SetPreference方法中存在错误:无法从"T"转换为"string"。
有没有什么好的方法来制作 Package 类?
我想用一种方法处理这里的所有进程....:-(
2条答案
按热度按时间50few1ms1#
根据Xamarin Essentials Preferences.shared.cs on Github,Preferences 中的***set***方法不支持泛型类型。因此我们无法直接将其 Package 在泛型setter中。
根据Xamarin.Essentials: Preferences,Xamarin首选项中只支持七种数据类型。我只能为每种数据类型编写如下代码:
希望对你有用。
k3fezbri2#
如果您只想存储类,则可以简单地使用序列化程序:
如果你想存储非类,那么最简单的方法是将对象 Package 到类中: