[Proto] Support polymorphic serialization for derived classes #63
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Since the
PbElem
field ofCommonElem(53)
contains actual data, the ServiceType field is used to distinguish the type of data contained therein.The TLVs also have this design model style.
It is hoped that the data structure can reflect this model design, making it easier to convert during serialization and deserialization.
Current
(Not Implemented CommonElem in V2)
In
Lagrange.Core
, directly read to a byte array and re-serialize.Reference
Reference STJ's JsonDerivedTypeAttribute and JsonPolymorphicAttribute structures to achieve polymorphism.
Example
See Lagrange.Proto.Test/ProtoPolymorphismTest.cs
To-do
Lagrange.Proto.Generator