public InvocationComposite(IMethodInterceptor[] interceptors, Castle.Core.Interceptor.IInvocation innerInvocation, object[] arguments) { _interceptors = interceptors; _innerInvocation = innerInvocation; _arguments = arguments; }
public override void Intercept(Castle.Core.Interceptor.IInvocation invocation) { if (invocation.Method.DeclaringType == typeof(INotifyPropertyChanged)) { var propertyChangedEventHandler = (PropertyChangedEventHandler)invocation.GetArgumentValue(0); if (invocation.Method.Name.StartsWith("add_")) { subscribers += propertyChangedEventHandler; } else { subscribers -= propertyChangedEventHandler; } return; } base.Intercept(invocation); var result = invocation.ReturnValue; // 속성값이 변경되었을 때 PropertyChanged event를 실행시킨다. if (invocation.Method.Name.StartsWith("set_")) { if (IsDebugEnabled) { log.Debug("Raise PropertyChanged event. PropertyName=" + invocation.Method.Name); } subscribers(this, new PropertyChangedEventArgs(invocation.Method.Name.Substring(4))); } invocation.ReturnValue = result; }
/*----------------------------------------------------------------------------------------*/ #region Public Methods /// <summary> /// Intercepts the specified invocation. /// </summary> /// <param name="castleInvocation">The invocation.</param> /// <returns>The return value of the invocation, once it is completed.</returns> public void Intercept(IInvocation castleInvocation) { IRequest request = CreateRequest(castleInvocation); Ninject.Core.Interception.IInvocation invocation = CreateInvocation(request); invocation.Proceed(); castleInvocation.ReturnValue = invocation.ReturnValue; }
/*----------------------------------------------------------------------------------------*/ #region Public Methods /// <summary> /// Intercepts the specified invocation. /// </summary> /// <param name="castleInvocation">The invocation.</param> /// <returns>The return value of the invocation, once it is completed.</returns> public void Intercept(IInvocation castleInvocation) { IRequest request = CreateRequest(castleInvocation); Ninject.Core.Interception.IInvocation invocation = CreateInvocation(request); invocation.Proceed(); castleInvocation.ReturnValue = invocation.ReturnValue; }
/*----------------------------------------------------------------------------------------*/ #region Private Methods private IRequest CreateRequest(IInvocation castleInvocation) { var requestFactory = Context.Binding.Components.Get <IRequestFactory>(); return(requestFactory.Create( Context, Instance, castleInvocation.GetConcreteMethod(), castleInvocation.Arguments, castleInvocation.GenericArguments)); }
/*----------------------------------------------------------------------------------------*/ #region Private Methods private IRequest CreateRequest(IInvocation castleInvocation) { var requestFactory = Context.Binding.Components.Get<IRequestFactory>(); return requestFactory.Create( Context, Instance, castleInvocation.GetConcreteMethod(), castleInvocation.Arguments, castleInvocation.GenericArguments); }
public override void Intercept(Castle.Core.Interceptor.IInvocation invocation) { base.Intercept(invocation); if (autoTransaction == null) { return; } autoTransaction.Commit(); autoTransaction.Dispose(); autoTransaction = null; }
public CastleBasedInvocation(Castle.Core.Interceptor.IInvocation castleInvocation) { _castleInvocation = castleInvocation; }