2012-03-29 5 views
1

Я пытаюсь свернуть свой собственный АОП с помощью IMessageSink, и у меня есть все, что работает для моих целей, но я не могу понять, как разрешить замене моего метода пограничным обработчиком собственное кешированное значение для вызова исходного метода.Как переопределить возвращаемое значение с помощью IMessageSink.SyncProcessMessage

IMessage IMessageSink.SyncProcessMessage(IMessage msg) 
    {  
     IMessage returnMethod = null; 
     object overrideReturnValue = null; 
     if(OnEvent(msg, returnMethod, out overrideReturnValue)) 
     { 
      // how do i override the return message 
      // and return here? 
     } 
     returnMethod = next.SyncProcessMessage(msg); 
     OnEvent(msg, returnMethod, out overrideReturnValue); 
     return returnMethod; 
    } 

Вот полный источник AOP.cs, если это может помочь кому-то дать мне руку здесь.

ответ

1

Я получил ответ на свой вопрос. Обновлено source.

  IMethodCallMessage methodMessage = (IMethodCallMessage)msg; 
      returnMethod = new ReturnMessage(overrideReturnValue, methodMessage.Args, methodMessage.ArgCount, methodMessage.LogicalCallContext, methodMessage); 
      return returnMethod; 

 Смежные вопросы

  • Нет связанных вопросов^_^