2

我的班级中有以下枚举:

  public enum InventoryType
    {
        EQUIP = 1,
        USE = 2,
        SETUP = 3,
        ETC = 4,
        CASH = 5,
        EVAN = 6,
        TOTEMS = 7,
        ANDROID = 8,
        BITS = 9,
        MECHANIC = 10,
        HAKU = 11,
        EQUIPPED = -1
    }

现在,我有一个字段:

    public InventoryType InventoryType { get; private set; }

我从 MySql 加载数据。MySql 的类型列具有 InventoryType 字符串。如何将我得到的字符串转换为枚举 InventoryType?

我试过了:

this.InventoryType = reader.GetString("type");

但是,这当然行不通,因为它正在获取一个字符串并且需要一个 InventoryType。我能做些什么来转换它?谢谢。

4

3 回答 3

5

您可以使用以下方法解析它Enum.TryParse

InventoryType inventoryType;
if(Enum.TryParse(reader.GetString("type"), out inventoryType))
{
    //use inventoryType
}
else
{
    //not valid
}
于 2013-08-25T15:37:02.290 回答
3

您可以使用Enum.Parse将字符串解析回 Enum 值 -

this.InventoryType = (InventoryType)Enum.Parse(typeof(InventoryType),
                                                 reader.GetString("type"));

此外,Parse如果您确定该值有效,请使用;否则使用TryParse.

于 2013-08-25T15:36:31.363 回答
0

尝试这个:-

this.InventoryType= (InventoryType) Enum.Parse( typeof(InventoryType), reader.GetString("type") );
于 2013-08-25T15:37:37.710 回答