首页 > 解决方案 > 无法在 web api 中返回字典的默认值

问题描述

在我的WEB API我试图返回我的字典变量的默认值,以便我可以处理任何异常/错误。

Dictionary<string, string> dict = new Dictionary<string, string>();
        var error = "06";
        string key = "default";
        try
        {
            var serialPort = new SerialPort("COM2", 9600, Parity.Even, 8, StopBits.One);
            //serial port settings and opening it
            serialPort.Open();

            var stream = new SerialStream(serialPort);
            stream.ReadTimeout = 2000;
            // send request and waiting for response
            // the request needs: slaveId, dataAddress, registerCount            
            var responseBytes = stream.RequestFunc3(slaveId, dataAddress, registerCount);

            // extract the content part (the most important in the response)
            var data = responseBytes.ToResponseFunc3().Data;

            var finalData = floatArray(data);


            //var result = data.Where(r => r > 0).Select(r => r.ToString()).ToArray();
             dict = finalData.Select((b, i) => (value: b, index: i)) // convert bytes to sequence of (byte value, index)
                                .ToDictionary(x => x.index.ToString(), x => x.value.ToString());

            serialPort.Close();

            return dict;
        }
        catch (Exception ex)
        {
            return dict.TryGetValue(key, out error);
        }

我正在使用客户端发送错误消息,以便我可以验证我的try..catch. 但是我无法为我的dict变量设置默认值,因为我遇到了错误

无法将类型“bool”隐式转换为“System.Collections.Generic.Dictionary”

我怎样才能实现它?任何帮助将不胜感激。

标签: c#dictionaryasp.net-web-api2

解决方案


TryGetValue:获取ValueKey返回 abool,您可以更改catch,如以下代码:

try
{
...
}
catch (Exception ex)
{
    dict.Add(key, error);
    return dict;
}

我希望这会有所帮助。


推荐阅读