2016-04-01 7 views
0

私たちはマッパークラスをたくさん持ち、リファクタリングに邪魔をしました(.HasValueでチェックするような)。まもなく続く短いマッピングで:例外からのリフレクションによるnull可能なオブジェクト名の取得

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; 
    } 

見えますスタックトレースは、発生した行を知っています。

InvalidOperationExceptionには、リフレクション経由で情報を取得したフィールドに関する情報がありますか?この情報を入手することは可能でしょうか?

ExceptionResource resourceで達成できますか?もしそうなら、どのように?

ありがとうございます。

+0

リファクタリングコードを使用しない方が良いと思いますか?悪い場所のように見えます。 –

答えて

2

例外をスローしたコードでは、そのような情報で例外が注釈されていない限り、大きなコストをかけずに利用することはできません(スタックトレース行に対応するILを見つけるためにデバッグ情報を選んで、これは関係するフィールドの名前を理解するためにこれを行います)。

この場合、Nullable<T>は例外をスローし、格納されているフィールドについての情報はまったくないため、そのような情報を得ることは不可能です。

要するに、それは達成できません。

関連する問題