在拦截方法时是否可以更改返回类型?

时间:2013-04-27 07:34:00

标签: c# .net aop interceptor

我想将数据访问对象映射到域对象作为交叉关注点,并使用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()方法返回的对象类型更改为{{ 1}}。

我通过从List<PersonEntity>方法返回List<object>来解决这个问题,但是我必须在调用该方法的类中进行显式转换。

有没有办法在不进行显式演员的情况下实现这一目标?或者是否无法在处理程序中更改返回类型以接受方法?

0 个答案:

没有答案