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

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的另一种方法?

最佳答案

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

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

09-27 01:49