簡體   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