是否可以为C#中的KeyValuePairs的LinkedList创建序列化代理?

当前试图在一个统一的项目中实现一个保存和加载系统,以便能够保存和重新加载游戏状态。该项目类似于桌上的纸牌游戏,其中有纸牌和成堆的纸牌。卡栈包含keyvaluepairs的LinkedList,每个节点包含一个卡及其在堆中的方向(true =向上,false =向下)。看起来像这样:

LinkedList<keyvaluepairs<Cards,bool>> cardsList

我们已经使用序列化代理正确保存了项目中对象的位置,旋转和类型,但是其中的卡列表未保存。我们将如何为此类LinkedList创建序列化代理以保存和加载所需?我们尝试以不同的方式实施此操作,但到目前为止还没有运气,我们将不胜感激。

编辑:抱歉忘了提及我们为此使用的是二进制格式化程序,而不是XML

pjdontcry 回答:是否可以为C#中的KeyValuePairs的LinkedList创建序列化代理?

感谢您的答复,我们设法通过创建自定义的链表序列化代理来解决此问题,该代理迭代链表,并使用基于列表位置的唯一引用将每个节点保存到文件中。从文件加载数据时,我们可以使用相同的唯一引用以正确的顺序检索正确的节点。下面是一些代码片段,展示了我们如何做到这一点(我们意识到这可能不是最有效的方法,但是它可以满足我们的需求):

将数据保存到文件:

   `int num = 0;
    info.AddValue("count",cardsList.Count);
    foreach (KeyValuePair<Cards,bool> el in cardsList){
        info.AddValue(num + "id",el.Key.ID);
        info.AddValue(num + "faceUp",el.Value);
        num++;
    }`

从文件加载数据:

   `int count = (int)info.GetValue("count",typeof(int));
    string id = "";
    bool faceUp;
    for (int i = 0; i < count; i++)
    {
        id = (string)info.GetValue(i + "id",typeof(string));
        faceUp = (bool)info.GetValue(i + "faceUp",typeof(bool));
        linkedList.AddLast(new KeyValuePair<Cards,bool>(gameController.FindCard(id),faceUp));
    }`
本文链接:https://www.f2er.com/2656767.html

大家都在问