Атрибуты Protobuf с иерархией общих классов

У меня есть иерархия классов, которая выглядит следующим образом. Эти классы содержат много других деталей, которые я исключил. Это упрощение, чтобы сосредоточиться на аспекте сериализации этих классов.

[ProtoInclude(1, typeof(Query))]
[ProtoInclude(2, typeof(Query))]
[ProtoInclude(3, typeof(Query))]
[ProtoInclude(4, typeof(Query))]
[ProtoInclude(5, typeof(Query))]
abstract class Query
{
    public string Result { get; set; }
}
[ProtoInclude(1, typeof(SpecialQuery)]
abstract class Query : Query
{
    public new T Result { get; set; }
}
abstract class SpecialQuery : Query
{
    public new string Result { get; set; }
}

У меня также есть около 150 автоматически генерируемых потомков универсальных запросов с большим разнообразием универсальных типов. Например: я

[ProtoContract]
class W : Query
{
}
[ProtoContract]
class X : Query
{
}
[ProtoContract]
class Y : Query
{
}
[ProtoContract]
class Z : SpecialQuery
{
}

Мы также автоматически сгенерировали [ProtoInclude] для всех этих типов. Например:

[ProtoInclude(1, typeof(W)]
[ProtoInclude(2, typeof(X)]
[ProtoInclude(3, typeof(Y)]
[ProtoInclude(4, typeof(Z)]

Вопрос в том, как мне развернуть эти 150 ProtoInclude? Я'Я пробовал различные комбинации, которые кажутся логичными, но я получаю различные исключения в зависимости от того, какие атрибуты присутствуют и где. Типы, которые действительно нуждаются в сериализации в вышеприведенном примере, будут W, X, Y, Z, только там 'около 150 из них.

Может ли protobuf-net иметь дело с чем-то вроде этого, или я должен попробовать какой-то другой вид сериализации?

Ответы на вопрос(2)

Ваш ответ на вопрос