protected virtual void AddBeforeAdvice(string methodName, IBeforeAdvice before) { lock (this.m_BeforeAdvices) { if (!m_BeforeAdvices.Contains(methodName)) { m_BeforeAdvices.Add(methodName, before); } } }
public override void ReadAspect(string aspectXml, string aspectName) { IBeforeAdvice before = (IBeforeAdvice)ConfigurationXml.GetAdvice(aspectXml, aspectName, AdviceType.Before); string[] methodNames = ConfigurationXml.GetNames(aspectXml, aspectName, AdviceType.Before); foreach (string name in methodNames) { AddBeforeAdvice(name, before); } IAfterAdvice after = (IAfterAdvice)ConfigurationXml.GetAdvice(aspectXml, aspectName, AdviceType.After); methodNames = ConfigurationXml.GetNames(aspectXml, aspectName, AdviceType.After); foreach (string name in methodNames) { AddAfterAdvice(name, after); } }
public IMessage SyncProcessMessage(IMessage msg) { IMethodCallMessage call = msg as IMethodCallMessage; string methodName = call.MethodName.ToUpper(); IBeforeAdvice before = FindBeforeAdvice(methodName); if (before != null) { before.BeforeAdvice(call); } IMessage retMsg = m_NextSink.SyncProcessMessage(msg); IMethodReturnMessage reply = retMsg as IMethodReturnMessage; IAfterAdvice after = FindAfterAdvice(methodName); if (after != null) { after.AfterAdvice(reply); } return(retMsg); }