Messagepack Contractless De / Serialization - PullRequest
       39

Messagepack Contractless De / Serialization

0 голосов
/ 03 апреля 2019

Я пытаюсь де / сериализовать объекты из / в байтовые массивы, где я не имею никакого контроля над сериализуемыми объектами, поскольку это библиотека.

Код: (https://github.com/jonathansant/Orleans.Persistence.Redis/blob/master/Orleans.Persistence.Redis/Serialization/MessagePackSerializer.cs)

В вставленном репо выше я использую пространство имен Typeless, которое отлично работает для классов, находящихся в одной сборке. Однако произойдет сбой с объектом, созданным во внешней сборке.

Я пытался использовать распознаватель без контрактов:

public byte[] Serialize(object raw, Type type)
    => MessagePack.MessagePackSerializer.NonGeneric.Serialize(
        type,
        raw,
        ContractlessStandardResolver.Instance
    );

public object Deserialize(byte[] serializedData, Type type)
    => MessagePack.MessagePackSerializer.NonGeneric.Deserialize(
        type,
        serializedData,
        ContractlessStandardResolver.Instance
    );

который бросает:

System.TypeLoadException: Type 'MessagePack.Formatters.Orleans_GrainState`1\[\[Orleans_Persistence_Redis_E2E_MockState\, Orleans_Persistence_Redis_E2E\]\]Formatter1' from assembly 'MessagePack.Resolvers.DynamicContractlessObjectResolver, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is attempting to implement an inaccessible interface.

Есть идеи, как мне этого добиться?

...