msgpack / msgpack-cli

MessagePack implementation for Common Language Infrastructure / msgpack.org[C#]
http://msgpack.org
Apache License 2.0
835 stars 175 forks source link

Unable to cast object of type on netcore #340

Open littleAnarchy opened 4 years ago

littleAnarchy commented 4 years ago

Hello. We have been transferring our projects to netcore 3.1 and netstandard 2.0 and now we are experiencing an issue with generating MessagePackSerializer for our messages. We are receiving such exception: Unable to cast object of type 'MsgPack.Serialization.EmittingSerializers.Generated.Parent_ParentClassSerializer3' to type 'MsgPack.Serialization.MessagePackSerializer1[Parent.ParentClass]'.`

We are loading libraries in runtime. We have two libs with messages. One lib has enum and message which uses this enum, and the second lib has only one message which uses enum from first. If serializers for the types in the second library is created first, then serializers for types in the first library can't be created and we are receiving the exception. All libs with messages and lib that performing serialization using netstandard2.0 and only lib with entry point using netcore3.1.

image

Bug disappears if we change loading order (lib with enum load first) or use net472 for the entry point library.

MsgPackExceptionExample.zip

littleAnarchy commented 4 years ago

tried netcore2.0 - same bug