Я использую сериализацию xml, но теперь столкнулся с ошибкой во время выполнения, которую я не видел раньше.
"Для XML-сериализации, типы которых
наследовать от IEnumerable должен иметь
реализация Add (System.Object)
на всех уровнях их наследования
иерархия. ImageEditor.EffectOptions
не реализует Add (System.Object) "
Кажется немного странным, что вынужден реализовывать метод через исключение времени выполнения, а не из-за ошибки времени компиляции, такой как отсутствующие методы из реализованных интерфейсов.
Это задумано? Разве это не должно выполняться через какой-то интерфейс, такой как XmlSerializable
и т. Д.
Кроме этого мне интересно, гарантирует ли сериализатор передачу значения правильного типа, где я могу просто привести его к типу, который в моем случае равен EffectOption
.
Или я должен реализовать этот метод Add (object)
, чтобы увидеть, имеет ли объект тип EffectOption
и, если нет, выдать исключение?
Я не реализовывал этот метод Add (object)
ранее, но, по-моему, безопаснее просто привести его к EffectOption
и добавить в EffectOptions
коллекцию.
РЕДАКТИРОВАТЬ: Вот сам тип:
public class EffectOptions : IEnumerable<EffectOption>
{
public List<EffectOption> Options { get; private set; }
//IEnumerable methods
}