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
,
Я хотел бы услышать лучший подход.