我正在尝试使用protobuf-net序列化这种类型的对象:
[ProtoContract]
public class RedisDataObject
{
[ProtoMember(1)]
public string DataHash;
[ProtoMember(2, DynamicType = true)]
public Dictionary<ContextActions, List<Tuple<string, List<object>>>> Value;
}
[Serializable]
public enum ContextActions
{
Insert,
Update,
Delete
}
我正在使用List<object>
,因为我在其中存储了我代码中其他类的不同实例。
但是我遇到了以下错误信息:
Unable to resolve a suitable Add method for System.Collections.Generic.Dictionary...
这显然是由于字典引起的,但我找不到解决此问题的方法。
[ProtoContract]
类进行测试。但也许我可以将其与这里的答案结合起来,消除对非合同类型的限制。 - dbc[ProtoContract]
。请查看这里以了解如何设置它。基本上,您需要将属性[ProtoMember(N)]
添加到要使用的字段中,或者只需像这样使用ImplicitFields
注释:[ProtoContract(ImplicitFields = ImplicitFields.AllFields)]
来包括类中的所有字段。此注释ImplicitFields
具有更多选项,因此您可以根据需要探索和使用。 - Liran Friedman