如何显示例外中的对象列表?

时间:2019-08-02 20:24:06

标签: c# list exception

我正在将自定义对象列表传递给我的自定义异常类,并且需要显示消息中的所有对象。我该怎么办?

public class MissingUnitSNSException : Exception
{
    public MissingUnitSNSException()
    {

    }

    public MissingUnitSNSException(List<UnitViewModel> missingsns)
        : base(String.Format("Serial Numbers not found: {0}", missingsns))
    {

    }
}

该错误告诉我对象的类型,但是我需要绑定到列表中每个对象的序列号属性。

3 个答案:

答案 0 :(得分:5)

如何用逗号分隔的序列号替换missingsns。像这样:

string.join(", ", missingsns.Select(sns => sns.SerialNumber.ToString()))

这应该列出序列号,例如:A01, B01, C02, ...


整行:

public MissingUnitSNSException(List<UnitViewModel> missingsns)
        : base(String.Format("Serial Numbers not found: {0}", 
                  string.join(", ", missingsns.Select(sns => sns.SerialNumber.ToString()))))

答案 1 :(得分:1)

请不要在消息字段中输入重要信息。将它们发布出来会对您的代码用户造成痛苦!

异常是类。为此数据添加一个只读属性。将其添加到ToString()将返回的内容中。这是适当的异常处理的核心规则之一:

现在有了对象,您可能不想分配对异常的引用。异常不仅可以使对象保持活动状态,而且还很有可能在处理异常之前在这些实例上调用Dispose-使这些引用变得毫无用处。

当您似乎对“仅”字符串数据感到满意时,string[]可能是一个很好的类型。分发时,您一定要介意对其进行浅表克隆,但是否则,这是常规的readonly异常属性。

答案 2 :(得分:0)

好的,您可以显示绑定到列表中每个对象的序列号属性。您必须进入列表并选择所有序列号属性,如下所示:

2IzH3qD+5Xl1GH1LMJUPew==