Estoy utilizando la serialización xml pero ahora encontré un error de tiempo de ejecución que no había visto antes.¿Por qué XmlSerializer requiere tipos que hereden de IEnumerable tener una implementación de Add (System.Object)?
"Para ser XML serializable, tipos, que hereda de IEnumerable debe tener una implementación de Añadir (System.Object) en todos los niveles de su herencia jerarquía. ImageEditor.EffectOptions no implementa Añadir (Sistema .Object) "
Parece un poco extraño estar obligado a implementar un método a través de la excepción de tiempo de ejecución, en lugar de errores de tiempo de compilación, como métodos faltantes de las interfaces implementadas.
¿Esto es por diseño? ¿No debería aplicarse esto a través de algún tipo de interfaz como XmlSerializable
, etc.?
Aparte de esto me pregunto si el serializador garantiza pasar un valor del tipo correcto donde puedo simplemente convertirlo al tipo, que en mi caso es EffectOption
.
¿O debería implementar este método Add (object)
para ver si el objeto es del tipo EffectOption
y si no se lanza una excepción?
No he implementado este método Add (object)
anteriormente pero supongo que es más seguro simplemente echarlo a EffectOption
y agregarlo a la colección EffectOptions
.
EDIT: Aquí está el propio tipo:
public class EffectOptions : IEnumerable<EffectOption>
{
public List<EffectOption> Options { get; private set; }
//IEnumerable methods
}
Gracias, pero ¿qué quieres decir con subclases? Mi tipo no se deriva de ningún otro tipo, simplemente implementa IEnumerable. –
¿Puedes publicar la clase con los apéndices del método? –
Agrega el código a la pregunta. –