【发布时间】:2011-03-02 20:05:07
【问题描述】:
我正在使用 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
}
【问题讨论】:
标签: c# .net exception serialization ienumerable