Closed JonathanBout closed 10 months ago
Please don't do that (BitConverter
) - apart from being ridiculously inefficient, that is also CPU-endian, meaning: you're going to have a bad time on some CPUs
Can I see your MyEnum
? I want to put together a full repro
Also: I think this is already resolved in protobuf-net v3; basically, protobuf-net v2 supported "mapped" enums, where-by the value that was serialized was not always the same as the intrinsic value; a "passthru" mode existed, but you needed to configure that manually - it was a pain and not very useful, and it conflicted with some later proto3 semantics
in protobuf-net v3, "mapped" enums are deprecated, and everything is "passthru" by default; so I believe if you simply update to protobuf-net v3, it will "just work"
Note that protobuf-net and protobuf-net.Grpc are separate packages; protobuf-net.Grpc suggests v2, but if you add an explicit package reference to protobuf-net, you can use v3 (and it can exploit a lot of newer features in v3)
It's a very simple user role enum:
public enum UserRights : uint
{
None = 0,
Minimal = 1,
ManageRoles = 2,
Administrator = ~None
}
Which I am obviously going to expand it in the future
Can you try with protobuf-net v3?
if that isn't an option, let me know (and I'll show you how to configure "passthru")
I'll be able to take a look at it in a few hours
Yeah this seems to work, thanks!
In my hosted blazor WASM system I have a uint-derived enum. When serialized, this causes problems as it apparently gets sent as a signed int32.
The exception I get is this:
System.OverflowException: Value was either too large or too small for an Int32.
, the full stack trace is at the end of this issue.I found a workaround by using
BitConverter
in a private property like this:Full stack trace