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

私の Soldier クラスは Person クラスの一種です

そこがあなたの問題です。基本クラスと同様Personに、子クラスにキャストすることはできませんSoldier

パラメータとして を取り、プロパティを個別に設定する Convert 関数をPersonクラスに記述する必要があります。Soldier

于 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、基本クラスであるクラスです。基本クラスには、子クラスのすべての属性が含まれているわけではありません。ただし、子クラスにはその親のすべての属性があります。

理想的には、Soldierオブジェクトを返す場合、メソッドの戻り値の型を Soldier にする

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