C# пользовательская сериализация класса со списком интерфейсов

Я пытаюсь найти способ сериализации и десериализации ClassToSerialize ниже, построенный как:

    [Serializable]
    public interface IFoo
    {
    }

    [Serializable]
    public class BaseFoo : IFoo
    {
    }
    [Serializable]
    public class Foo1 : BaseFoo
    {
        public string Foo1_Member1 { get; set; }
        public int Foo1_Member2 { get; set; }
    }
    [Serializable]
    public class Foo2 : BaseFoo
    {
        public IList<IFoo> Foo2_Member3 { get; set; }
        public string Foo2_Member4 { get; set; }
    }
    [Serializable]
    public class ClassToSerialize
    {
        public string Class_Member1;
        public IFoo Foo;
    }

Класс будет передан в API, и при десериализации экземпляры Foo1 и Foo2 должны быть реконструированы и помещены в свойство "Foo", а затем по цепочке в IList или подобный объект.

Я застрял с этим в течение дня или около того, и у меня нет идей!

1 ответ

Для других людей, пытающихся сделать что-то подобное: я закончил тем, что реализовал ISerializable на BaseFoo, Foo1, Foo2 а также ClassToSerialize,

Я добавил FooType Type поле к интерфейсу и реализовал его на базовом классе.

В реализации я десериализирую сначала BaseFoo а затем я снова десериализовать на основе типа либо Foo1 или же Foo2,

Я хотел бы услышать лучший подход.

Другие вопросы по тегам