繁体   English   中英

通过异常反射获取可空对象名称

[英]Getting nullable object name via reflection from exception

我们有许多映射器类,不鼓励进行重构(例如,使用.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来实现? 如果可以,怎么办?

提前致谢。

除非引发该异常的代码用此类信息注释了该异常,否则您将无法不付出高昂的代价就可以使用该异常(请考虑调试信息以找到与堆栈跟踪行相对应的IL,然后重新组装以找出该异常所涉及字段的名称)。

在这种情况下, Nullable<T>会引发异常,并且它没有关于存储该字段的任何信息,因此它不可能获得这种信息。

简而言之,不,它无法实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM