webserviceからenumにアクセスする必要があります。enumのようなクラスのシリアライズ
WebServiceが(列挙型定義でプリセット値を無視して)列挙に0ベースの整数を割り振るように、私は次のように構築された:
public class StatusType
{
public StatusVal Pending { get { return new StatusVal(1, "Pending"); } }
public StatusVal Authorised { get { return new StatusVal(2, "Authorised"); } }
public StatusVal Rejected { get { return new StatusVal(3, "Rejected"); } }
public StatusVal Sent { get { return new StatusVal(4, "Sent"); } }
public StatusVal InActive { get { return new StatusVal(5, "InActive"); } }
public List<StatusVal> StatusList()
{
List<StatusVal> returnVal = new List<StatusVal>();
StatusType sv = new StatusType();
returnVal.Add(sv.Pending);
returnVal.Add(sv.Authorised);
returnVal.Add(sv.Rejected);
returnVal.Add(sv.Sent);
returnVal.Add(sv.InActive);
return returnVal;
}
}
public class StatusVal
{
public StatusVal(int a, string b)
{
this.ID = a;
this.Name = b;
}
public int ID { get; set; }
public string Name { get; set; }
}
私は、その後、次のWebMethod属性でStatusValのリストを得る:
[WebMethod]
public List<ATBusiness.StatusVal> GetStatus()
{
ATBusiness.StatusType a = new ATBusiness.StatusType();
return a.StatusList();
}
このWebメソッドを参照することはできませんが、エラーが発生します。StatusValは、パラメータのないコンストラクタがないため、シリアル化できません。
WebMethodの戻り値の型として定義されているStatusValue型にパラメータを渡す必要がありますか?
StatusList()メソッドごとにStatusValsのリストを返すには、これが必要です。
[Serializable]属性でマークすることはできますか? –