Это похоже на работу для Enum.TryParse ().
public Enum GetSensorTypeAtLocation(int x)
{
...
// Send serial command and receive response.
string responseCommand = SendReceive(String.Format("SR,ML,{0},\r", x));
//Try to parse the response into a value from one of the enums;
//the first one that succeeds is our sensor type.
SensorTypeA typeAresult;
if(Enum.TryParse(responseCommand, typeAResult)) return typeAresult;
SensorTypeB typeBresult;
if(Enum.TryParse(responseCommand, typeBResult)) return typeBresult;
SensorTypeC typeCresult;
if(Enum.TryParse(responseCommand, typeCResult)) return typeCresult;
}
Проблема заключается в том, что вы не можете создавать перегрузки на основе типа возвращаемого значения, и, следовательно, вы не будете точно знать, что вернет система (но CLR узнает во время выполнения, и вы можете запросить тип возвращаемого значения, чтобы получить конкретный ответ).
Я бы серьезно рассмотрел Enum SensorType
, содержащий значения A, B и C. Затем функция может вернуть определенный ответ в зависимости от того, какой тип ответа дал датчик:
public SensorType GetSensorTypeAtLocation(int x)
{
...
// Send serial command and receive response.
string responseCommand = SendReceive(String.Format("SR,ML,{0},\r", x));
// Process response command string and return result.
SensorTypeA typeAresult;
if(Enum.TryParse(responseCommand, typeAResult)) return SensorType.A;
SensorTypeB typeBresult;
if(Enum.TryParse(responseCommand, typeBResult)) return SensorType.B;
SensorTypeC typeCresult;
if(Enum.TryParse(responseCommand, typeCResult)) return SensorType.C;
}
Теперь по самому возвращаемому значению, в виде дня, вы знаете тип датчика.