Десериализация коллекции интерфейсов C# Redis — не удалось создать экземпляр типа

Я использую кэш C# StackExchange.Redis и пытаюсь кэшировать объект, содержащий набор объектов интерфейса. Кэш работает нормально, но десериализация выдает ошибку:

Could not create an instance of type IMyInterface. Type is an interface or abstract class and cannot be instantiated.

Если бы я сам занимался десериализацией, я понимаю, что мог бы создавать собственные правила десериализации через этот ТАК опубликовать:

var obj = JsonConvert.DeserializeObject <MyParentClass>(json, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Auto,
    Binder = binder // write some custom deserialization rules
});

Однако у меня нет доступа к процессу десериализации, потому что он обрабатывается Redis/Newtonsoft.Json. Кстати, я использую StackExchange.Redis 1.1.0.0 и Newtonsoft.Json 9.0.0.0.

Я также нашел этот сообщение SO об указании serialVersionUID, однако это явно для Java, как указано в этом сообщении SO.

Итак, что мне не хватает или каковы мои варианты? Заранее спасибо!

Вот пример кода для работы:

public interface IMyInterface
{
    string Name { get; set; }
}

public class MyChildClassA : IMyInterface
{
    public string Name { get; set; }
}

public class MyChildClassB : IMyInterface
{
    public string Name { get; set; }
}

public class MyParentClass
{
    public IList<IMyInterface> Children { get; set; }
    // Assume proper init of list in constructor
}

public void DoStuff()
{
    var parentValue = new MyParentClass();
    // Assume parentValue.Children contains objects of both MyChildClassA and MyChildClassB

    // Works!
    MyCacheImplementation.Add<MyParentClass>(someKey, parentValue);
    // Does NOT work!
    MyCacheImplementation.Get<MyParentClass>(someKey);
}

person chadiusvt    schedule 16.01.2017    source источник
comment
SE Redis не поддерживает сериализацию. Вероятно, вы используете какой-то другой nuget, который сделает это за вас. Как насчет того, чтобы вы сами заботились о сериализации? Или, если используемая вами библиотека заботится о сериализации, она должна позволять вам устанавливать параметры Newstonsoft Json.   -  person MichaC    schedule 17.01.2017
comment
Не знал, что SE Redis сам не выполнял сериализацию, мне придется копать, чтобы найти, где это происходит в моей кодовой базе. Спасибо!   -  person chadiusvt    schedule 17.01.2017