Serialization of mixed mixin instances, for which a derived mixin type is generated, throws a FileNotFoundException


In some situations, re-mix needs to generate a subclass proxy from a mixin type, e.g., when a mixin has a protected method with an OverrideTarget attribute. In such a case, when the mixin is also mixed, two subclass proxies are generated. If an instance of such a mixed derived mixin type is serialized and later deserialized, a FileNotFoundException such as the following is thrown:

To solve this, the ComplexSerializationEnabler of the TypePipe needs to detect cases where an additional type also generated by the TypePipe is to be serialized. It then needs to first reconstruct the additional type, then use this as the requested type when regenerating the type for deseialization. E.g., the proxy serialized for the additional type - MixinSerializationHelper - could implement a GetRealType method that returns the "real type" represented by the proxy. That real type is then the requested type.

Alternatively, the MixinParticipant could be changed to unify the two subclass proxies, e.g., by using a dedicated IPipeline with an additional participant.




User known




Fix versions