我有一辆Car和派生的SportsCar:Car这样的
东西:
public class Car
{
public int TopSpeed{ get; set; }
}
public class SportsCar : Car
{
public string GirlFriend { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个Web服务,返回汽车的方法,即:
[WebMethod]
public Car GetCar()
{
return new Car() { TopSpeed = 100 };
}
Run Code Online (Sandbox Code Playgroud)
它返回:
<Car>
<TopSpeed>100</TopSpeed>
</Car>
Run Code Online (Sandbox Code Playgroud)
我有另一种方法也返回这样的汽车:
[WebMethod]
public Car GetMyCar()
{
Car mycar = new SportsCar() { GirlFriend = "JLo", TopSpeed = 300 };
return mycar;
}
Run Code Online (Sandbox Code Playgroud)
它编译很好和一切,但在调用它时我得到:
System.InvalidOperationException:生成XML文档时出错.---> System.InvalidOperationException:不期望wsBaseDerived.SportsCar类型.使用XmlInclude或SoapInclude属性指定静态未知的类型.
我觉得奇怪的是,因为mycar是一辆汽车所以它不能将其序列化为直车.
在WebMethod上添加XmlInclude可以消除错误:
[WebMethod]
[XmlInclude(typeof(SportsCar))]
public Car GetMyCar()
{
Car …Run Code Online (Sandbox Code Playgroud)