我想将数据访问对象到域对象的映射视为横切关注点,并使用 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()
方法返回来解决这个问题,但是我必须在调用该方法的类中进行显式转换。
有没有办法在不进行显式转换的情况下实现这一目标?还是不可能在接受方法的处理程序中更改返回类型?