我有第三方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;
}