У меня возникла проблема с моей проблемой сериализации XML. Я работал над своим проектом, чтобы (de) сериализовать объект, который имеет интерфейс как атрибут. Я знаю, что вы не можете сериализовать интерфейс, и об этом говорит моя ошибка.Сериализовать объект с интерфейсом
Вот пример объекта, который я хочу сохранить в файл:
public class Task
{
public int id;
public string name;
public TypeEntree typeEntree;
public int idRequired;
public string code;
public int waitTime;
public string nameApp;
// ... Constructors (empty and non-empty) and methods ...
}
TypeEntree является пустым интерфейсом, это только связать различные объекты и использовать их легко вокруг моего приложения. Например, вот два из объектов, которые использует этот интерфейс:
[Serializable]
public class Mouse : TypeEntree
{
public Point point;
public IntPtr gaucheOuDroite;
public string image;
// ... Constructors (empty and non-empty) and methods ...
}
[Serializable]
public class Sequence : TypeEntree
{
public List<Tuple<string, Point, long, IntPtr>> actions;
// ... Constructors (empty and non-empty) and methods ...
}
Интерфейс TypeEntree также имеет [Serializable] атрибут, а также [XmlInclude (TypeOf (мышь)] для каждого из моих классов, которые использует этот . интерфейс
Вот мой вопрос: Почему когда я пытаюсь сериализации, он может не определяет тип моего объекта (typeEntree в задаче), так как я добавил [XmlInclude (TypeOf (мышь)] атрибуты
?Также, как я должен исправить эту проблему?
Additionnally, вот методы сериализации/десериализации Я обнаружил, что, кажется, работает очень хорошо без интерфейса: https://stackoverflow.com/a/22417240/6303528
какой сериализатор вы используете? – rene
В последнем предложении я указываю его. http://stackoverflow.com/a/22417240/6303528 - XML XmlSerializer –
Сериализатор добавляет атрибуты не для сериализации, а для де-сериализации. Сетевой библиотеке нужны атрибуты при десериализации для различения унаследованных классов. – jdweng