Serializability of enum-like class

Posted by callisto on Stack Overflow See other posts from Stack Overflow or by callisto
Published on 2009-08-19T12:19:11Z Indexed on 2010/04/05 6:03 UTC
Read the original article Hit count: 235

Filed under:
|

I need to access an enum through a webservice.

As a webservice allocates 0 based integers to an enumeration (ignoring preset values in enum definition), I built the following:

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

I then get the list of StatusVal with the following webmethod:

[WebMethod]   
public List<ATBusiness.StatusVal> GetStatus()
{
   ATBusiness.StatusType a = new ATBusiness.StatusType();
   return a.StatusList();
}

I cannot however use this webmethod as referring it, I get the error: StatusVal cannot be serialized because it does not have a parameterless constructor.

I don't quite understand: should I pass params into the StatusValue type defined as the WebMethod's return Type?

I need this to return a list of StatusVals as per the StatusList() method.

© Stack Overflow or respective owner

Related posts about c#3.0

Related posts about asmx