我正在尝试将列表保存到 xaamarin 表单中的首选项。我成功地序列化了我的列表,但我在反序列化时遇到了问题。
public class FlyoutItemPage
{
public FlyoutItemPage(string title, Type targetPage)
{ this.TargetPage = targetPage;
this.Title = title;
}
public string Title { get; set; }
public Type TargetPage { get; set; } }
}
我在用户单击按钮时序列化 FlyoutItemPage 项目列表。
private async void menuItemFavButton_Clicked(object sender, EventArgs e)
{
var menuItem = (MenuItem)sender;
var myPage = menuItem.CommandParameter as FlyoutItemPage;
FlyoutItemPage f = new FlyoutItemPage(myPage.Title, myPage.TargetPage);
ObservableCollection<FlyoutItemPage> flyoutItemPages = new ObservableCollection<FlyoutItemPage>();
flyoutItemPages.Add(f);
var json = JsonConvert.SerializeObject(flyoutItemPages);
Preferences.Set("favorites", json);
}
那是我的列表来自 json,我尝试反序列化它。
[{"Title":"Depo Aktarım","TargetPage":"İdaServis.View.DepoAktarımPage, İdaServis, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"}]
我在其他页面的 OnAppearing 方法上反序列化该列表。
protected override void OnAppearing()
{
base.OnAppearing();
try
{
var json = Preferences.Get("favorites", "");
if (json == null) new ObservableCollection<FlyoutItemPage>();
Console .WriteLine(json.ToString());
**ObservableCollection<FlyoutItemPage> flyoutItemPages = JsonConvert.DeserializeObject<ObservableCollection<FlyoutItemPage>>(json);**
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
但它给了我这个错误:
**System.Globalization.CultureNotFoundException:** 'Culture name neutral, PublicKeyToken=null is not supported. Parameter name: name'
我该如何解决这个问题?
我想制作一个最喜欢的列表弹出页面,并将此列表设置为主页内的列表视图。然后用户可以轻松访问最喜欢的页面。
你的班级应该是
public class FlyoutItemPage
{
public FlyoutItemPage(string title, string targetPage)
{
this.TargetPage = Type.GetType(targetPage);
this.Title = title;
}
public string Title { get; set; }
public Type TargetPage { get; set; }
}
但是如果您没有定义类型的任何 DLL,TargetPage 将始终为 null。