我正在使用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。有没有办法解决这个问题,因为我不想为每种类型创建十几个保存方法?非常感谢您的任何帮助。
答案 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);
}