-1

GetHWTypeName here is defined in int type, I want to cast it to enum type as XL_HardwareType is of enum type.

public string GetHWTypeName(int status)
{
    switch (status)
    {
        case (int)XLDefine.XL_HardwareType.XL_HWTYPE_CANCARDXL:
            return "CanCardXL";

        case (int)XLDefine.XL_HardwareType.XL_HWTYPE_CANCASEXL:
            return "CanCaseXL";

        case (int)XLDefine.XL_HardwareType.XL_HWTYPE_VIRTUAL:
            return "Virtual device";

        case (int)XLDefine.XL_HardwareType.XL_HWTYPE_CANCARDX:
            return "CanCardX";
        case (int)XLDefine.XL_HardwareType.XL_HWTYPE_VN1610:
            return "VN1610";
        // ...
    }
}

XL_HardwareType definition is written in this way

public enum XL_HardwareType
{
    XL_HWTYPE_NONE = 0,
    XL_HWTYPE_VIRTUAL = 1,
    XL_HWTYPE_CANCARDX = 2,
    XL_HWTYPE_CANAC2PCI = 6,
    XL_HWTYPE_CANCARDY = 12,
    XL_HWTYPE_CANCARDXL = 15,
    XL_HWTYPE_CANCASEXL = 21,
    XL_HWTYPE_CANCASEXL_LOG_OBSOLETE = 23,
    XL_HWTYPE_CANBOARDXL = 25,
    XL_HWTYPE_CANBOARDXL_PXI = 27,
    XL_HWTYPE_VN2600 = 29,
    XL_HWTYPE_VN2610 = 29,
    XL_HWTYPE_VN3300 = 37,
    XL_HWTYPE_VN3600 = 39,
    XL_HWTYPE_VN7600 = 41,
    XL_HWTYPE_CANCARDXLE = 43,
    XL_HWTYPE_VN8900 = 45,
    XL_HWTYPE_VN8950 = 47,
    XL_HWTYPE_VN2640 = 53,
    XL_HWTYPE_VN1610 = 55,
    XL_HWTYPE_VN1630 = 57,
    // ...
}
Wyatt Earp
  • 1,783
  • 13
  • 23
Adarsh SL
  • 3
  • 1
  • 2
    I'm not sure I follow. If you just want to cast it, then cast it? `return (XLDefine.XL_HardwareType)status` should work. – Charles Mager Jul 02 '15 at 13:39
  • Something like http://stackoverflow.com/questions/29482/cast-int-to-enum-in-c-sharp/22830894#22830894 ? – atlaste Jul 02 '15 at 13:50

1 Answers1

1

All you need is a straightforward (cast) like this:

public string GetHWTypeName(int status)
{
    switch ((XLDefine.XL_HardwareType)status)
    {
        case XLDefine.XL_HardwareType.XL_HWTYPE_CANCARDXL:
            return "CanCardXL";

        case XLDefine.XL_HardwareType.XL_HWTYPE_CANCASEXL:
            return "CanCaseXL";

        case XLDefine.XL_HardwareType.XL_HWTYPE_VIRTUAL:
            return "Virtual device";

        case XLDefine.XL_HardwareType.XL_HWTYPE_CANCARDX:
            return "CanCardX";

        case XLDefine.XL_HardwareType.XL_HWTYPE_VN1610:
            return "VN1610";
        // ...
    }
}

Having said that, it would be better if you can change the signature of public string GetHWTypeName(int status) to public string GetHWTypeName(XLDefine.XL_HardwareType status) then you don't need the cast at all.

Note that your function as currently defined could be made static.

Stephen Kennedy
  • 20,585
  • 22
  • 95
  • 108