我有这个功能,我用它来验证
public void Validate()
{
Action<List<Field>> validateFields = (field) =>
{
if (field != null && field.Any())
{
field.ForEach(x => x.Validate());
}
};
new List<List<Field>> { this.PersonElements, this.ContactElements, this.MiscElements }.ForEach(x =>
{
try
{
validateFields(x);
}
catch (Exception e)
{
Log.ErrorFormat("An exception has occurred while validation of {1} : {0}", e, x.ToString()); // print something as x.Name.ToString());
throw;
}
});
}
问题在于这一行:
new List<List<Field>> { this.PersonElements, this.ContactElements, this.MiscElements }.ForEach(x =>
我需要(如果发生异常)将某些内容记录为
尝试处理&#34; PersonElements / ContactElements / MiscElements&#34;时出现异常。取决于在哪个验证期间发生了异常。
如果在处理过程中发生异常,如何获取列表变量名称?
提前致谢。
答案 0 :(得分:0)
变量名仅在其上下文中有意义。可以使用不同的变量访问相同的对象。因此,以类似Tuple<String, List<Field>>
的类型提供集合的名称是合理的。
new List<Tuple<List<Field>>> { Tuple.Create("PersonElements", this.PersonElements), ... }.ForEach (
...
validateFields(x.Item2);
...
Log.ErrorFormat("An exception has occurred while validation of {1} : {0}", e, x.Item1);