0

我想将数据访问对象到域对象的映射视为横切关注点,并使用 AOP(面向方面​​编程)解决问题。我喜欢做的是拦截存储库类并在处理程序类中进行映射。

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()方法返回来解决这个问题,但是我必须在调用该方法的类中进行显式转换。

有没有办法在不进行显式转换的情况下实现这一目标?还是不可能在接受方法的处理程序中更改返回类型?

4

0 回答 0