将派生类传递给Web服务方法,作为基类

时间:2013-04-10 19:39:33

标签: c# web-services tostring derived-class

我有一个从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属性指定静态未知的类型。

有没有办法让它从客户端接受?一个表示it's just like the base class, just serialize it as such的属性?

或者从派生类到基类的大规模转换的简单方法?

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

1 个答案:

答案 0 :(得分:2)

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

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