MAUI Preferences报错:无法将System.Int64转换为System.Int32
MAUI Preferences存储long类型报错的解决办法
当然可以用Preferences存储数值,你的问题出在读取时的泛型推断错误:
在DefaultDictionary的getter里,你写的Preferences.Get(nameof(DefaultDictionary), 0)中,默认值0是int类型,编译器会自动推断调用Get<int>这个重载。但你存储的是long(Int64)类型的值,读取时就会尝试把存储的Int64强制转换成Int32,从而抛出类型转换异常。
解决方法很简单,二选一即可:
- 将默认值改为long类型的
0L,让编译器正确推断泛型为long:get { return Preferences.Get(nameof(DefaultDictionary), 0L); } - 或者显式指定泛型类型,彻底避免推断错误:
get { return Preferences.Get<long>(nameof(DefaultDictionary), 0); }
修改后的完整类代码:
using CommunityToolkit.Mvvm; public class UserSettings { public long DefaultDictionary { get { return Preferences.Get(nameof(DefaultDictionary), 0L); } set { Preferences.Set(nameof(DefaultDictionary), value); } } public void CleanValues() { Preferences.Clear(); } }
内容的提问来源于stack exchange,提问作者Enrico
相关产品推荐
相关产品推荐

