Atrybuty Protobuf z hierarchią klas ogólnych

Mam hierarchię klas, która wygląda tak. Te klasy zawierają wiele innych szczegółów, które wykluczyłem. Jest to uproszczenie, które koncentruje się na aspekcie serializacji tych klas.

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

Mam także około 150 automatycznie generowanych potomków ogólnej kwerendy, z dużą różnorodnością typów ogólnych. Na przykład:

[ProtoContract]
class W : Query<bool>
{
}
[ProtoContract]
class X : Query<string>
{
}
[ProtoContract]
class Y : Query<int>
{
}
[ProtoContract]
class Z : SpecialQuery
{
}

Również dla tych wszystkich typów automatycznie wygenerowałem [ProtoInclude]. Na przykład:

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

Pytanie brzmi, jak wdrożyć te 150 ProtoIncludes? Próbowałem różnych kombinacji, które wydają się logiczne, ale otrzymuję różne wyjątki w zależności od tego, które atrybuty są obecne gdzie. Typy, które w rzeczywistości wymagają serializacji, to W, X, Y, Z, tylko około 150 z nich.

Czy protobuf-net może sobie poradzić z czymś takim, czy powinienem wypróbować inny rodzaj serializacji?

questionAnswers(2)

yourAnswerToTheQuestion