如何将List<T>存储在本地设置中?

8

目前我正在使用以下方法存储数据,该方法已成功编译。

App.removalList.Add(new RemoveFavourites(App.user.auth_token, App.user.user_id, proid.ToString()));

ApplicationData.Current.LocalSettings.Values["Remove_fav_properties_list"] = App.removalList;

代码编译成功,但运行时出现以下错误:

WinRT 信息:尝试将值序列化以写入应用程序数据存储时发生错误。
其他信息:不支持此类型的数据。

以下是 RemoveFavourites 类的代码:

public class RemoveFavourites
{

    public string auth_token { get; set; }

    public string user_id { get; set; }

    public string property_id { get; set; }

    public RemoveFavourites(string auth_token, string user_id, string property_id)
    {
        this.auth_token = auth_token;
        this.user_id = user_id;
        this.property_id = property_id;
    }
}

完整的异常信息如下:

在用户代码中未处理 System.Exception 类型的异常。 WinRT 信息: 尝试将要写入应用程序数据存储的值序列化时出错 其他信息: 不支持此类型的数据。 尝试将要写入应用程序数据存储的值序列化时出错 如果有此异常的处理程序,则程序可能可以安全地继续运行。


жӮЁеә”иҜҘиғҪеӨҹиҺ·еҸ–еҶ…йғЁејӮеёёиҜҰз»ҶдҝЎжҒҜпјҢд»ҘжЈҖжҹҘе“ӘдёӘеұһжҖ§RemoveFavouritesзұ»жңӘжҲҗеҠҹеәҸеҲ—еҢ–гҖӮжңүдәӣзұ»еһӢпјҢжҜ”еҰӮSolidColorBrushпјҢжҳҜдёҚеҸҜеәҸеҲ—еҢ–зҡ„гҖӮ - Nikhil Vartak
1
请展示您正在使用的“T”实际类型的定义;问题可能是由特定类型引起的。请同时展示配置文件中列表的定义。 - Codor
感谢nvartak和codor的快速回复,我已经更新了问题。 - Bilal Amjad
你尝试过使用 App.removalList.ToArray() 吗? - Hamid Pourjam
是的,我尝试过了,但仍然出现了相同的错误。 - Bilal Amjad
这是一个XML序列化器的完美工作! - Amen Jlili
1个回答

4

您不能将复杂对象存储在应用程序设置中。(参考文献

尝试对该对象进行序列化(可能使用json或您自己实现的自定义序列化方式),然后再存储数据。


你确定这是不可能的,还是只是在Visual Studio的IDE中无法配置? - Codor
see the reference @Codor - Hamid Pourjam
1
感谢提示;请注意,此答案建议使用自定义格式来存储用户定义类型的对象(这可能被视为将一种机制硬塞到另一种机制中)。 - Codor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接