2011-01-23 27 views
2

我正在爲暴露抽象基類類型的應用程序編寫一個插件,並且我的類應該從中派生出來。 當它將我的實例化類存儲起來供以後檢索時,應用程序使用其XML序列化器對該類進行序列化,而不暴露序列化程序給我。XML-對派生類進行序列化,而無需訪問基類或序列化器實例?

顯然,當它試圖序列化我的課,XML序列化器拋出一個System.InvalidOperationException例外,與消息

「之類YourDerivedType預計不會。使用 的XmlInclude或SoapInclude 屬性指定 靜態未知的類型。「

由於我沒有訪問的基類,我不能與XmlInclude屬性修飾它,因爲應用程序使用它自己的序列,我不能使用new XmlSerializer,通過我的派生類型給它的構造,然後使用這個XmlSerializer進行序列化。

關於如何(或是否!)的任何建議我可以讓我的課程序列化並使此例外消失?

+0

這聽起來確實比聽起來要難。您插入的應用程序是否沒有提供準則?如果他們專門爲插件設計了這個架構,那麼它應該是直截了當的,或者他們已經搞砸了。如果它是一個既定的應用程序,那麼大概不是後者。你可以參考的任何例子來看看你是否接近錯誤? – Rory 2011-01-23 23:19:59

+0

我同意羅裏,它比理想的情況更令人費解。我已經聯繫了應用程序的產品團隊,以獲得有關我們如何才能使其工作的任何建議。 – Satyajit 2011-01-24 07:16:54

回答

1

嘗試在您的派生類中實現IXmlSerializable,並希望XML序列化程序識別它並使用它。如果沒有,我認爲你運氣不好。

確保你的類有一個無參數的構造函數(容易忘記,但對IXmlSerializable必不可少)。