我正在使用xml序列化,但现在遇到了一个我从未见过的运行时错误。为什么XmlSerializer需要从IEnumerable继承的类型来实现Add(System.Object)?
“要XML序列化,从IEnumerable的 继承必须在其继承各级 层次。ImageEditor.EffectOptions 没有实现添加有 实施加(System.Object的) 类型(系统.Object)“
似乎有点奇怪,被迫通过运行时异常实现一个方法,而不是编译时间错误,如从实现的接口中缺少方法。
这是设计吗?如果这不是通过像XmlSerializable
等某种接口强制执行的?
除此之外,我想知道序列化程序是否保证传递正确类型的值,我可以将其转换为类型,在我的情况下是EffectOption
。
或者我应该执行这个Add (object)
方法来查看对象是否是EffectOption
类型,如果不抛出异常?
我之前没有实现过这个Add (object)
方法,但我猜想把它投到EffectOption
并将其添加到EffectOptions
集合会更安全。
编辑:这里的类型本身:
public class EffectOptions : IEnumerable<EffectOption>
{
public List<EffectOption> Options { get; private set; }
//IEnumerable methods
}
谢谢,但你是什么意思的子类?我的类型不是从任何其他类型派生的,它只是实现IEnumerable。 – 2011-03-02 20:08:32
你可以发布带有方法存根的类吗? – 2011-03-02 20:09:46
将代码添加到问题中。 – 2011-03-02 20:13:40