1

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

我的 Soldier 类是 Person 类的一种。

 [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;
}

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

4

3 回答 3

3

我的士兵类是人类的一种

那就是你的问题。与Person基类一样,它不能转换为子类Soldier

您需要在Person类中编写一个以 aSoldier作为参数并单独设置属性的 Convert 函数。

于 2012-05-01T21:09:56.650 回答
0

你能做的就是这样。

Soldier soldier = new Soldier(){soldier.Prop1 = Person.CorrespondingProp;//for all the propertiese};
于 2012-05-01T21:09:06.513 回答
0

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

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

 public static Soldier getPerson(int personId)
 {
    return personService.getSoldier(personId);
 }
于 2012-05-01T21:13:31.557 回答