这应该很简单,但我似乎无法弄清楚。我有一个向API发送数据的功能:
public bool UpdateCustomer(int customerid, string status)
{
apicall(customerid, status);
return true;
}
UpdateCustomer(1234, "shipped")
这很好。但是API有一个预定义的可接受状态列表,我不想让调用该函数的人将其正确使用,我想创建某种枚举或类似的东西:
public bool UpdateCustomer(int customerid, Status status)
{
apicall(customerid, status);
return true;
}
UpdateCustomer(1234, Statuses.Shipped)
我想将该值传递给其实际接受值“已发货”的API。
我尝试用静态字符串创建一个类:
public class Status
{
public static string Cancelled = "cancelled";
public static string Unsubmitted = "unsubmitted";
public static string Saved = "saved";
public static string Submitted = "submitted";
public static string Arrived = "arrived";
public static string Completed = "completed";
public static string Shipped = "shipped";
}
但是当我去调用UpdateCustomer(1234,Status.Shipped)时,它说它不能从字符串转换为Status。我已经用枚举完成了很多次,但是我不能使用枚举,因为它们仅支持int值。
使用字符串值(或除整数以外的任何东西)最简单的方法是什么?
编辑:如果我将函数设置为public bool UpdateCustomer(int customerid,string status)并使用UpdateCustomer(1234,Statuses.Shipped)调用它,它确实可以工作,但是这违反了傻瓜式验证的目的,您仍然可以传递任何字符串想要的价值。我真的希望函数参数为Status的类型,以便它强制调用者使用预定义的状态之一。
这可以用字典来完成。假设您有一个包含3个值的“状态”枚举。Complete
,Incomplete
和Abandoned
。然后,您将要创建一个字典以用作查找表。
Dictionary<Status, string> statusDict = new Dictionary<Status, string>()
{
{ Status.Complete, "Complete" },
{ Status.Incomplete, "Incomplete" },
{ Status.Abandoned, "Abandoned" }
};
当您从他们那里收到状态枚举(CustomerStatus)时,对API调用所需要做的就是...
apicall(customerID, statusDict[CustomerStatus]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句