我正在使用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
}
Run Code Online (Sandbox Code Playgroud)