Protobuf-net inheritance from child to parent

I have a parent class in which I want to have many flat children. This means that 10 or more different classes will be inherent in one class.

Here is what I have.

Base class:

[ProtoContract]
[ProtoInclude(500, typeof(Message1Send))]
[ProtoInclude(501, typeof(Message2Send))]
public class MessageBase
{
    [ProtoMember(1)]
    public string Topic {get;set;}
    [ProtoMember(2)]
    public string Action { get; set; }       
}

2 out of many classes of children:

[ProtoContract]    
public class Message1Send : MessageBase
{        
    [ProtoMember(1)]
    public string Property1 { get; set; }
}

[ProtoContract]    
public class Message2Send : MessageBase
{        
    [ProtoMember(1)]
    public string Property1 { get; set; }
}

I want to specify a child, I am part of the base class.

I do not want to get to the point where my base class is as follows:

[ProtoContract]
[ProtoInclude(500, typeof(Message1Send))]
[ProtoInclude(501, typeof(Message2Send))]
[ProtoInclude(502, typeof(Message3Send))]
[ProtoInclude(503, typeof(Message4Send))]
[ProtoInclude(504, typeof(Message5Send))]
[ProtoInclude(505, typeof(Message6Send))]
[ProtoInclude(506, typeof(Message7Send))]
[ProtoInclude(507, typeof(Message8Send))]
[ProtoInclude(508, typeof(Message9Send))]
[ProtoInclude(509, typeof(Message10Send))]
public class MessageBase
{
    [ProtoMember(1)]
    public string Topic {get;set;}
    [ProtoMember(2)]
    public string Action { get; set; }       
}

Is there a way for each of the Send classes to just add one reference to the base class, so I don’t need to add ProtoInclude for every flat child that I create?

+4
source share
1 answer

. / , , , , , - , . , , , , .

, . , ( ), , , .

: , RuntimeTypeModel .

+3

All Articles