我有一个基于 WSE 3.0 的 Web 服务和一个 WinForms 客户端应用程序,该应用程序利用该服务的 References.cs 中定义的类型,但对它们进行子类化以提供客户端所需的一些附加功能。
但是,当我将子类的实例传回 Web 服务时,即使我明确地转换回原始类型,我也会感到害怕:
使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。
参考我的派生类型。
代码摘要:
public class DefinedInReferenceCs
{
// ...
}
public class ClientSubclass : DefinedInReferenceCs
{
// My extra stuff
}
public class MyClient
{
public CallTheWebService(ClientSubclass obj)
{
// obj is an instance of ClientSubclass, cast as DefinedInReferenceCs
svc.MyMethod((DefinedInReferenceCs)obj);
// Throws an exception complaining that ClientSubclass is not statically known
}
}
我可以通过显式创建 DefinedInReferenceCs 实例并执行相关字段的深层复制来解决此问题。有没有更好的办法?