我需要通过网络服务访问枚举。
由于web服务将基于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();
}
我不能使用这个webmethod作为引用它,我得到错误:StatusVal无法序列化,因为它没有无参数构造函数。
我不太明白:我应该将params传递给定义为WebMethod的返回类型的StatusValue类型吗?
我需要根据StatusList()方法返回StatusVals列表。
答案 0 :(得分:1)
正如错误所说,你的类需要一个没有参数的构造函数。反序列化时,运行时将使用该构造函数而不是您定义的构造函数。
类似的东西:
public StatusVal()
{
}
当您使用参数创建构造函数时,您将自动删除默认的无参数构造函数,这就是编译器所抱怨的内容。