ドメイン オブジェクトへのデータ アクセス オブジェクトのマッピングを分野横断的な関心事として扱い、AOP (Aspect Oriented Programming) を使用して問題を解決したいと考えています。私がやりたいことは、リポジトリ クラスをインターセプトし、ハンドラー クラスでマッピングを行うことです。
public List<PersonEntity> GetAll()
{
List<PersonDao> daoPersons = FetchAll();
return daoPersons;
}
public class MapperCallHandler<TEntity> : ICallHandler
{
public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
IMethodReturn msg = getNext()(input, getNext);
msg.ReturnValue = Mapper.Map<TEntity>(msg.ReturnValue);
return msg;
}
}
コンパイラはこれを好みません。GetAll()メソッドから返された型が間違っています。
ハンドラーがメソッドから返されるオブジェクトの型を に変更するため、GetAll()メソッドの戻り値の型を変更List<PersonDao>しても実行時に機能しない場合。GetAll()List<PersonEntity>
List<object>メソッドから戻ることでこれを解決しましたGetAll()が、メソッドを呼び出すクラスで明示的なキャストを行う必要があります。
明示的なキャストを行わずにこれを達成する方法はありますか? または、メソッドを受け入れるハンドラーで戻り値の型を変更することは不可能ですか?