I have a base class called PrivilegeType
and it's inherited by various other classes.
Everything works fine except for one specific field called PossibleValues
which doesn't get serialized/deserialized well.
Base class definition:
[ProtoContract]
[ProtoInclude(13, typeof(PrivilegeEnum))]
public abstract class PrivilegeType {
...
}
PrivilegeEnum
definition:
[ProtoContract]
public class PrivilegeEnum : PrivilegeEnumLike<PrivilegeEnumValue> {
...
}
PrivilegeEnumLike<T>
definition:
[ProtoContract]
public abstract class PrivilegeEnumLike<T> : PrivilegeType<T>
{
[ProtoMember(2)]
public Dictionary<string, PrivilegeEnumValue> PossibleValues;
...
}
PrivilegeEnumValue
definition:
[ProtoContract]
public class PrivilegeEnumValue
{
[ProtoMember(1)]
public string Value;
[ProtoMember(2)]
public string Text;
[ProtoMember(3)]
public HashSet<PrivilegeEnumValue> ImpliedValues = new HashSet<PrivilegeEnumValue>();
...
}
The thing is, that field is defined inPrivilegeEnumLike<T>
which is not included in ProtoInclude
list itself, but its subclasses are. I can't add PrivilegeEnumLike<>
to ProtoInclude
list because I guess it doesn't make sense.