根据输入Enum c#

时间:2018-04-18 07:58:42

标签: c# dll enums out

我有第三方DLL

有一个包含70个值的枚举

和一个基于它的函数获取枚举并设置返回值

但我的问题是这个函数19超出了out值

如果有干净的方法(不使用if-else,或创建巨大的dictionary

这是我的示例代码(我使用了3个值作为示例,但还有更多选项)

public static dynamic getHardwareValue(HardwareValue hardwareValue)
    {
        string strResult;
        byte[] byteArrResult = new byte[256];
        byte byteResult;
        int intResult;
        bool boolResult;           

        if (HardwareValue.Apci1DeviceId == hardwareValue || HardwareValue.Apci2DeviceId == hardwareValue || ..)
        {
            if (NativeMethods.AdiGetHardwareValue(hardwareValue, out strResult))
                return strResult;
            else
                return false;
        }
        else if (HardwareValue.Apci1Eeprom == hardwareValue || HardwareValue.Apci2Eeprom == hardwareValue || ..)
        {
            if(NativeMethods.AdiGetHardwareValue(hardwareValue, byteArrResult))
                return byteArrResult;
            else
                return false;
        }
        else if (HardwareValue.Apci1Variant == hardwareValue || HardwareValue.Apci2Variant == hardwareValue || ..)
        {
            if (NativeMethods.AdiGetHardwareValue(hardwareValue, out byteResult))
                return byteResult;
            else
                return false;
        }
        return null;
    }

0 个答案:

没有答案