Esempio n. 1
0
		public InvocationComposite(IMethodInterceptor[] interceptors,
								   Castle.Core.Interceptor.IInvocation innerInvocation, object[] arguments)
		{
			_interceptors = interceptors;
			_innerInvocation = innerInvocation;
			_arguments = arguments;
		}
Esempio n. 2
0
        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;
		}
Esempio n. 4
0
        /*----------------------------------------------------------------------------------------*/
        #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;
        }
Esempio n. 5
0
        /*----------------------------------------------------------------------------------------*/
        #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;
 }