从Ajax转发的对象

时间:2012-05-01 21:05:48

标签: c# asp.net .net ajax.net

我正在使用AJAX.NET和C#ASP.NET

我的士兵类是一种人类。

 [WebMethod, ScriptMethod]
 public static Person getPerson(int personId)
 {
    return (Person)personService.getSoldier(personId);
 }

这非常有效。在Ajax方面,我可以获得并设置士兵属性。但是,当我发回这个对象时,我无法将其转换回士兵对象。

[WebMethod, ScriptMethod]
public static Person savePerson(Person person)
{
   Soldier soldier = (Soldier)person;
}

这失败了。它说它不能将对象Person转换为Soldier。有没有办法解决这个问题,因为我不想为每种类型创建十几个保存方法?非常感谢您的任何帮助。

3 个答案:

答案 0 :(得分:3)

我的士兵类是一种人类

那就是你的问题。由于Person是基类,因此无法将其强制转换为子类Soldier

您需要在Person类中编写一个转换函数,该函数将Soldier作为参数并单独设置属性。

答案 1 :(得分:0)

你能做的就是那个。

Soldier soldier = new Soldier(){soldier.Prop1 = Person.CorrespondingProp;//for all the propertiese};

答案 2 :(得分:0)

我猜你是从Soldier班级创建的Person班级。您的方法返回类型是Person类,它是基类。 基类不具有Child类的所有属性。但是,子课程将具有其父母的所有属性。

理想情况下,我要返回一个Soldier对象,我会将我的方法返回类型设为士兵

 public static Soldier getPerson(int personId)
 {
    return personService.getSoldier(personId);
 }