我有一类汽车和派生跑车:汽车
事情是这样的:C#我怎样才能回到我的基类的web服务
public class Car
{
public int TopSpeed{ get; set; }
}
public class SportsCar : Car
{
public string GirlFriend { get; set; }
}
我有回到汽车方法的web服务,即:
[WebMethod]
public Car GetCar()
{
return new Car() { TopSpeed = 100 };
}
它返回:
<Car>
<TopSpeed>100</TopSpeed>
</Car>
我有另一种方法,一LSO返回汽车这样的:
[WebMethod]
public Car GetMyCar()
{
Car mycar = new SportsCar() { GirlFriend = "JLo", TopSpeed = 300 };
return mycar;
}
它编译罚款和一切,但调用它,当我得到:
System.InvalidOperationException:有一个错误生成XML文档。 ---> System.InvalidOperationException:类型wsBaseDerived.SportsCar不是预期的。使用XmlInclude或SoapInclude属性指定静态未知的类型。
我发现奇怪的是,它不能将这个序列化为一辆直线汽车,因为mycar是一辆汽车。
上ourse的的WebMethod添加XmlInclude删除错误:
[WebMethod]
[XmlInclude(typeof(SportsCar))]
public Car GetMyCar()
{
Car mycar = new SportsCar() { GirlFriend = "JLo", TopSpeed = 300 };
return mycar;
}
,现在返回:
<Car xsi:type="SportsCar">
<TopSpeed>300</TopSpeed>
<GirlFriend>JLo</GirlFriend>
</Car>
但我真正想要的基类返回, 没有额外的属性等来自派生类。
这是否可以不创建mappers等?
请说是;)
你是什么意思创建映射器?你在谈论注释数据合同吗? – Nix 2010-05-12 11:54:10
嗨! 抱歉不清楚,我的意思是没有为汽车/跑车创建手动转换方法。 即 私有静态汽车地图(跑车SC) { 返回新车(){TopSpeed中文= sc.TopSpeed}} 或 丑陋的东西类似的:) – HenriM 2010-05-12 12:13:31