投射从 Ajax 返回的对象

本文关键字:对象 返回 Ajax | 更新日期: 2023-09-27 18:33:02

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

我的士兵类是一种人员类。

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

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

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

此操作失败。它说它不能将对象人转换为士兵。有没有办法解决这个问题,因为我不想为每种类型创建十几种保存方法?您的任何帮助将不胜感激。

投射从 Ajax 返回的对象

"My Soldier class 是 Person 类的一种"

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

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

你能做的就是这样。

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

我猜你从Person类创建了Soldier类。方法返回类型是作为基类Person类。 基类将不具有 Child 类的所有属性。但是子类将具有其父类的所有属性。

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

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