我正在使用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