在foreach循环中使用Dictionary.add时,执行似乎无缘无故地停止

时间:2019-03-27 14:06:44

标签: c# asp.net

这真让我感到困惑,因为我不知道执行我的方法突然停止的任何明显原因。

我下面的方法相对简单,我要做的就是遍历对象集合,并根据当前数据将一些数据添加到新的Dictionary中。

public Dictionary<string, string> MapValidationErrorToIdentifiers(List<ErrorField> errors)
        {
            var mappings = new Dictionary<string, string>();

            foreach (var error in errors)
            {
                string identifier;
                if (error.CollectionIndex == "")
                {
                    identifier = error.Section + "-" + error.FieldName.Replace(" ", "-");
                }
                else
                {
                    identifier = error.Section + "-" + (error.CollectionIndex + 1) + "-" + error.FieldName.Replace(" ", "-");
                }
                identifier = identifier.ToLower();
                mappings.Add(identifier, error.Message);
            }

            return mappings;
        }

输入对象List<ErrorField>ErrorField个对象组成,它们是简单的DTO对象。

public class ErrorField
    {
        public string FieldName { get; set; }
        public string Section { get; set; }
        public string CollectionIndex { get; set; }
        public string Message { get; set; }
    }

在一个实例中测试此方法期间,errors输入对象包含12个ErrorField对象,foreach成功完成了一次迭代,并且将键值对添加到了字典中。然后,在第二次迭代中,该方法开始工作,直到进行mappings.Add(identifier, error.Message);调用为止,此时调试器完全停止,并且不再执行任何操作。

这里的奇怪之处是执行只是停止,没有引发异常或错误。此方法是较大的ASP.NET项目的一部分,并且在控制器中使用此方法。当执行停止时,它将导致我的端点返回404。不确定是否相关。

0 个答案:

没有答案