protobuf-чистая исключений для универсального базового класса
У меня есть следующее..
[ProtoContract, ProtoInclude(50, typeof(DateRange)), ProtoInclude(51, typeof(IntRange))]
public class Range<T> : IEquatable<Range<T>>, IEquatable<OpenRange<T>> where T: struct, IComparable<T>
{
[ProtoMember(1)]
public T Start { get; set; }
[ProtoMember(2)]
public T End { get; set; }
}
[ProtoContract]
public class DateRange : Range<DateTime>
{
}
[ProtoContract]
public class IntRange : Range<int>
{
}
Когда я пытаюсь сериализовать DateRange, я получаю следующую ошибку..
Протобуф.ProtoException: тип может участвовать только в одной иерархии наследования (DateRange) ----> Система.Исключение InvalidOperationException: тип может участвовать только в одной иерархии наследования
Проведя некоторое время в исходном коде, я почти уверен, что проблема заключается в том, что DateRange и IntRange технически имеют разных родителей, так как Range != Диапазон. Так что на самом деле я не знаю, как мы должны обращаться с дженериками.