我正在将自定义对象列表传递给我的自定义异常类,并且需要显示消息中的所有对象。我该怎么办?
public class MissingUnitSNSException : Exception
{
public MissingUnitSNSException()
{
}
public MissingUnitSNSException(List<UnitViewModel> missingsns)
: base(String.Format("Serial Numbers not found: {0}", missingsns))
{
}
}
该错误告诉我对象的类型,但是我需要绑定到列表中每个对象的序列号属性。
答案 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==