【发布时间】:2016-03-14 23:14:08
【问题描述】:
我有一个名为PrivilegeType 的基类,它被其他各种类继承。
一切正常,除了一个名为 PossibleValues 的特定字段没有很好地序列化/反序列化。
基类定义:
[ProtoContract]
[ProtoInclude(13, typeof(PrivilegeEnum))]
public abstract class PrivilegeType {
...
}
PrivilegeEnum 定义:
[ProtoContract]
public class PrivilegeEnum : PrivilegeEnumLike<PrivilegeEnumValue> {
...
}
PrivilegeEnumLike<T> 定义:
[ProtoContract]
public abstract class PrivilegeEnumLike<T> : PrivilegeType<T>
{
[ProtoMember(2)]
public Dictionary<string, PrivilegeEnumValue> PossibleValues;
...
}
PrivilegeEnumValue 定义:
[ProtoContract]
public class PrivilegeEnumValue
{
[ProtoMember(1)]
public string Value;
[ProtoMember(2)]
public string Text;
[ProtoMember(3)]
public HashSet<PrivilegeEnumValue> ImpliedValues = new HashSet<PrivilegeEnumValue>();
...
}
问题是,该字段定义在PrivilegeEnumLike<T> 中,它不包含在ProtoInclude 列表本身中,但它的子类包含。我无法将PrivilegeEnumLike<> 添加到ProtoInclude 列表中,因为我认为这没有意义。
【问题讨论】:
标签: c# protobuf-net