C# 将派生类作为基类传递给web服务方法

C# 将派生类作为基类传递给web服务方法,c#,web-services,tostring,derived-class,C#,Web Services,Tostring,Derived Class,我有一个从web服务导入的C#类。由于调试问题和数组,我需要该类具有ToString()覆盖或DebuggerDisplayAttribute,我找到的唯一方法是将前者添加到派生类中: class ExtWebServiceDataClass: WebServiceDataClass { public override string ToString() { return String.Format("stuff"); } } 不幸的是,webservi

我有一个从web服务导入的C#类。由于调试问题和数组,我需要该类具有
ToString()
覆盖或
DebuggerDisplayAttribute
,我找到的唯一方法是将前者添加到派生类中:

class ExtWebServiceDataClass: WebServiceDataClass
{
    public override string ToString()
    {
        return String.Format("stuff");
    }
}
不幸的是,webservice方法需要基本对象数组,而不接受派生对象数组(XML序列化错误):

System.InvalidOperationException:生成XML文档时出错

→ System.InvalidOprrationException:不应为ExtWebServiceDataClass类型。使用XmlInclude或SoapInclude属性指定静态未知的类型

有没有办法让它从客户端接受它?一个表示它与基类类似的属性,只需将其序列化为这样的

还是从派生类到基类进行大规模转换的简单方法


或者更简单地说,在客户端使用
ToString
覆盖或
DebuggerDisplayAttribute
的另一种方法

WebServiceDataClass
在生成的文件中声明为
部分类
(与大多数生成的类一样)。您可以在同一项目的另一个文件中定义或
ToString
,如下所示:

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

序列化错误到底是什么?我个人建议您删除此问题,并在回去工作时询问更详细的问题。否则我们很可能会猜测。我在家里复制了错误并添加了错误消息。您是说要将客户端定义的类型发送到服务器,并在服务器上执行ToString覆盖吗?或者ToString覆盖只是为了客户端调试吗?
WebServiceDataClass
是否在生成的文件中声明为
partial class
?如果是这样,您可以在另一个文件中定义您的
DebuggerDisplayAttribute
。谢谢,至少对于我的“应用程序”和“DLL”客户机来说,这非常有效。对于网站客户端(它们的web引用被认为是独立的程序集)则不是这样,但我可以将相关代码移动到DLL中,它就可以工作了。