In C# we have namespaces in .proto we get from protobuf-net we do not get any namespaces. So the question is how to make protobuf-net generate (and use inside) .proto files with namespacs/packages.
Example when we parsed all our project to make .proto files to connect a C++ app to our C# app we got tons of
enum AnimationCode {
None = 0;
Idle = 1;
//...
}
and
enum SessionCode {
None = 0;
//...
}
And so when we gave that unified project .proto file to protogen compiler we got tons of
Enum type "SessionStateCode" has no value named "None".
and
Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it.
and no C++ code.
Point was to make it so that encoded C# message would be at least readable from C++
There is not currently any code inside protobuf-net to perform automatic name collision fixes, although I'd be interested to know if you have any proposals. Another option would be:
enum AnimationCode {
[ProtoEnum(Name="AnimationCode_None")]
None = 0,
Idle = 1
}
Here, the .proto will use AnimationCode_None
when generation the scema; in fact, it will be:
enum AnimationCode {
AnimationCode_None = 0;
Idle = 1;
}
I've checked the MetaType
/ValueMember
API, and it looks like currently it would be hard to set the .Name
at runtime, but that could be fixed in a new release easily enough (like with this similar enum/MetaType
fix) if you preferred to set them at runtime rather than decorate with attributes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With