我们有很多映射器类,并且不鼓励重构(比如使用.HasValue
检查)。简而言之,如下所示:
public static MyDto MyEntityToMyDto(MyEntity entity)
{
MyDto dto = new MyDto ();
try
{
dto.DtoAge = entity.Age.Value;
dto.DtoBirthDate = entity.Birthdate.Value;
dto.DtoNumber = entity.Number.Value;
}
catch (InvalidOperationException ex)
{
//Throw CustomException with message including the property name which is null like "Age field is null"
}
return dto;
}
似乎异常Stacktrace知道它发生了哪一行。
InvalidOperationException是否有关于通过反射获取信息的字段的任何信息?可以获得这些信息吗?
或者可以用ExceptionResource resource
来实现吗?如果是这样的话?
提前致谢。
答案 0 :(得分:2)
除非引发异常的代码使用这种信息注释异常,否则没有大量成本就无法使用它(想想挑选调试信息以找到对应于堆栈跟踪线的IL然后重新组装这个弄清楚所涉及的领域的名称。)
在这种情况下,Nullable<T>
抛出异常并且它没有关于它所存储的字段的任何信息,因此它不可能获得那种信息。
简而言之,不,它无法实现。