Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Protobuf net序列化多值字典(字符串,字符串)时出错_C#_Serialization_Protobuf Net_Multi Value Dictionary - Fatal编程技术网

C# 使用Protobuf net序列化多值字典(字符串,字符串)时出错

C# 使用Protobuf net序列化多值字典(字符串,字符串)时出错,c#,serialization,protobuf-net,multi-value-dictionary,C#,Serialization,Protobuf Net,Multi Value Dictionary,我在我的项目(C#-VS2012-.net 4.5)中使用了它,如果您希望每个键都有多个值,这将非常有帮助,但我无法用protobuf.net序列化此对象 我已经用Protobuf轻松快速地序列化了字典(string,string),并且多值字典继承了该泛型类型;因此,从逻辑上讲,用相同的协议序列化它应该没有问题 有人知道解决方法吗 这是我执行代码时的错误消息: System.InvalidOperationException:无法解析合适的添加 System.Collections.Gener

我在我的项目(C#-VS2012-.net 4.5)中使用了它,如果您希望每个键都有多个值,这将非常有帮助,但我无法用protobuf.net序列化此对象

我已经用Protobuf轻松快速地序列化了字典(string,string),并且多值字典继承了该泛型类型;因此,从逻辑上讲,用相同的协议序列化它应该没有问题

有人知道解决方法吗

这是我执行代码时的错误消息:

System.InvalidOperationException:无法解析合适的添加 System.Collections.Generic.IReadOnlyCollection的方法


你真的需要一本字典吗? 如果字典中的项少于10000项,则还可以使用数据类型的修改列表

public类YourDataType
{
公共字符串密钥;
公共字符串值1;
公共字符串值2;
//在这里添加一些不同的数据。。。
}
公共类YourDataTypeCollection:列表
{
public YourDataType此[字符串键]
{
得到
{
返回此.FirstOrDefault(o=>o.Key==Key);
}
设置
{
YourDataType old=此[键];
如果(旧!=null)
{
int index=this.IndexOf(旧);
此.RemoveAt(索引);
插入(索引、值);
}
其他的
{
这个。添加(旧);
}
}
}
}
使用如下列表:

    YourDataTypeCollection data = new YourDataTypeCollection();

    // add some values like this:
    data.Add(new YourDataType() { Key = "key", Value1 = "foo", Value2 = "bar" });

    // or like this:
    data["key2"] = new YourDataType() { Key = "key2", Value1 = "hello", Value2 = "world" };
    // or implement your own method to adding data in the YourDataTypeCollection class

    XmlSerializer xser = new XmlSerializer(typeof(YourDataTypeCollection));

    // to export data
    using (FileStream fs = File.Create("YourFile.xml"))
    {
        xser.Serialize(fs, data);
    }

    // to import data
    using (FileStream fs = File.Open("YourFile.xml", FileMode.Open))
    {
        data = (YourDataTypeCollection)xser.Deserialize(fs);
    }

    string value1 = data["key"].Value1;

谢谢@KlausFischer,我的字典包含超过150万个元素,我使用这种类型是因为它的检索速度很快。我使用了许多其他类型和多值字典是迄今为止最快的!