2013-04-10 60 views
4

我有從Web服務導入的C#類。由於調試問題和數組,我需要這個類有一個ToString()覆蓋或DebuggerDisplayAttribute,我發現這是加入前者派生類的唯一方法:將派生類傳遞給Web服務方法,作爲基類

class ExtWebServiceDataClass: WebServiceDataClass 
{ 
    public override string ToString() 
    { 
     return String.Format("stuff"); 
    } 
} 

不幸的是,Web服務方法要求的數組基本對象並且不接受派生對象的數組(XML序列化錯誤):

System.InvalidOperationException:生成XML文檔時出錯。

→ System.InvalidOprrationException:不期望類型ExtWebServiceDataClass。使用XmlInclude或SoapInclude屬性指定靜態未知的類型。

有什麼辦法讓它從客戶端接受它?一個屬性表示it's just like the base class, just serialize it as such

還是從派生類到基類進行大規模轉換的簡單方法?

或者更簡單地說,在客戶端有ToString覆蓋或DebuggerDisplayAttribute的另一種方法?

+0

什麼* *究竟是序列化錯誤? – 2013-04-10 19:40:49

+1

我個人建議你刪除這個問題,並在你回去工作時詢問更詳細的問題。否則,我們很可能會猜測。 – 2013-04-10 19:49:00

+0

我在家中重現了錯誤並添加了錯誤消息。 – Medinoc 2013-04-10 20:16:36

回答

2

WebServiceDataClass在生成的文件中聲明爲partial class(與大多數生成的類一樣)。您可以定義在同一個項目中的另一個文件的DebuggerDisplayAttributeToString,像這樣:

[DebuggerDisplay("MyString")] 
public partial class WebServiceDataClass 
{ 
} 
+0

謝謝,至少對於我的「應用程序」和「DLL」客戶端來說,這完美地工作。對於網站客戶來說不是那麼簡單(他們的Web引用被認爲是獨立的程序集),但是我可以將有問題的代碼移動到一個DLL中並且可以工作 – Medinoc 2013-04-23 12:28:31

相關問題