当前位置: 首页>>代码示例>>C#>>正文


C# GetNextHandlerDelegate类代码示例

本文整理汇总了C#中GetNextHandlerDelegate的典型用法代码示例。如果您正苦于以下问题:C# GetNextHandlerDelegate类的具体用法?C# GetNextHandlerDelegate怎么用?C# GetNextHandlerDelegate使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


GetNextHandlerDelegate类属于命名空间,在下文中一共展示了GetNextHandlerDelegate类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Invoke

        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
        {
            var methodName = input.MethodBase.Name;
            var target = input.Target;

            return getNext()(input, getNext);
        }
开发者ID:kangkot,项目名称:unity,代码行数:7,代码来源:TestHandler.cs

示例2: Invoke

        public IMethodReturn Invoke(
            IMethodInvocation input, 
            GetNextHandlerDelegate getNext)
        {
            if (this.allowedRoles.Length > 0)
            {
                IPrincipal currentPrincipal = Thread.CurrentPrincipal;

                if (currentPrincipal != null)
                {
                    bool allowed = false;
                    foreach (string role in this.allowedRoles)
                    {
                        if (allowed = currentPrincipal.IsInRole(role))
                        {
                            break;
                        }
                    }

                    if (!allowed)
                    {
                        // short circuit the call
                        return input.CreateExceptionMethodReturn(
                            new UnauthorizedAccessException(
                                "User not allowed to invoke the method"));
                    }
                }
            }

            return getNext()(input, getNext);
        }
开发者ID:kanpinar,项目名称:unity3.1th,代码行数:31,代码来源:AccessCheckCallHandler.cs

示例3: Invoke

        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
        {
            // Before invoking the method on the original target.
            this.logger.Log(
                "{0}: Invoking method {1}",
                DateTime.Now.ToLongTimeString(),
                input.MethodBase.Name);

            // Invoke the next behavior in the chain.
            var result = getNext()(input, getNext);

            // After invoking the method on the original target.
            if (result.Exception != null)
            {
                this.logger.Log(
                    "{0}: Method {1} threw exception {2}",
                    DateTime.Now.ToLongTimeString(),
                    input.MethodBase.Name,
                    result.Exception.Message);
            }
            else
            {
                this.logger.Log(
                    "{0}: Method {1} returned {2}",
                    DateTime.Now.ToLongTimeString(),
                    input.MethodBase.Name,
                    result.ReturnValue ?? "void");
            }

            return result;
        }
开发者ID:AlexJCross,项目名称:UnityInterception,代码行数:31,代码来源:LoggingAttribute.cs

示例4: Invoke

		public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
		{
			if (input.Arguments.Count > 0)
			{
				var arguments = new Argument[input.Arguments.Count];

				for (int i = 0; i < input.Arguments.Count; i++)
				{
					arguments[i] = new Argument
					               	{
					              		Name = input.Arguments.ParameterName(i),
					              		Value = input.Arguments[i]
					              	};
				}

				_tape.RecordRequest(arguments, input.MethodBase.ReflectedType, input.MethodBase.Name);
			}

			Console.WriteLine("> Intercepting " + input.MethodBase.Name);
			Console.WriteLine("> Intercepting " + input.MethodBase.ReflectedType);

			IMethodReturn methodReturn = getNext()(input, getNext);

			Console.WriteLine("> Intercepted return value: " + methodReturn.ReturnValue.GetType().Name);

			if (methodReturn.ReturnValue != null)
			{
				_tape.RecordResponse(methodReturn.ReturnValue, input.MethodBase.ReflectedType, input.MethodBase.Name);
			}

			return methodReturn;
		}
开发者ID:yonglehou,项目名称:Betamax.Net,代码行数:32,代码来源:RecordingCallHandler.cs

示例5: Invoke

		public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
		{
			if (this.targetMethodReturnsVoid(input) == true)
			{
				return (getNext()(input, getNext));
			}

			Object [] inputs = new Object [ input.Inputs.Count ];
			
			for (Int32 i = 0; i < inputs.Length; ++i)
			{
				inputs [ i ] = input.Inputs [ i ];
			}

			String cacheKey = this.createCacheKey(input.MethodBase, inputs);
			ObjectCache cache = MemoryCache.Default;
			Object [] cachedResult = (Object []) cache.Get(cacheKey);

			if (cachedResult == null)
			{
				IMethodReturn realReturn = getNext()(input, getNext);
				
				if (realReturn.Exception == null)
				{
					this.addToCache(cacheKey, realReturn.ReturnValue);
				}

				return (realReturn);
			}

			IMethodReturn cachedReturn = input.CreateMethodReturn(cachedResult [ 0 ], input.Arguments);
			
			return (cachedReturn);
		}
开发者ID:rjperes,项目名称:DevelopmentWithADot.UnityAop,代码行数:34,代码来源:CacheAttribute.cs

示例6: Invoke

 /// <exception cref="SapphireUserFriendlyException"><c>SapphireUserFriendlyException</c>.</exception>
 public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
 {
     var result = getNext()(input, getNext);
       if (result.Exception == null)
     return result;
       throw new SapphireUserFriendlyException();
 }
开发者ID:butaji,项目名称:Sapphire,代码行数:8,代码来源:ExceptionHandler.cs

示例7: Invoke

		public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
		{
			if (this.Before == true)
			{
				String arguments = String.Join(",", input.Arguments.Cast<Object>().Select(a => a != null ? a.ToString() : "null").ToArray());
				String beforeMessage = String.Format(this.Message, input.MethodBase, arguments);

				Logger.Write(beforeMessage, this.Categories, this.Priority, 0, this.Severity);
			}

			IMethodReturn result = getNext()(input, getNext);

			if (result.Exception != null)
			{
				if (this.Exception == true)
				{
					String afterMessage = String.Format(this.Message, input.MethodBase, result.Exception);

					Logger.Write(afterMessage, this.Categories, this.Priority, 0, this.Severity);
				}
			}
			else
			{
				if (this.After == true)
				{
					String afterMessage = String.Format(this.Message, input.MethodBase, result.ReturnValue);

					Logger.Write(afterMessage, this.Categories, this.Priority, 0, this.Severity);
				}
			}

			return (result);
		}
开发者ID:rjperes,项目名称:DevelopmentWithADot.UnityAop,代码行数:33,代码来源:LogAttribute.cs

示例8: Invoke

        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
        {
            IMethodReturn methodReturn;

            using (var transaction = this.Factory.GetCurrentSession().BeginTransaction())
            {
                // Here next attribute is called or original method, if no more attributes exist on operation
                methodReturn = getNext()(input, getNext);

                if (methodReturn.Exception == null || ShouldCommitDespiteOf(methodReturn.Exception))
                {
                    transaction.Commit();
                }
                else
                {
                    transaction.Rollback();
                }
            }

            // Required in cases (exceptions>) when instead of normal values NHibernate returns lazy proxies.
            this.Factory.GetCurrentSession().GetSessionImplementation().PersistenceContext.Unproxy(methodReturn.ReturnValue);

            // Get back to previous attribute handler or back to caller
            return methodReturn;
        }
开发者ID:targitaj,项目名称:m3utonetpaleyerxml,代码行数:25,代码来源:UmaConnTransactionHandler.cs

示例9: Invoke

        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
        {
            if (TargetMethodReturnsVoid(input))
            {
                return getNext()(input, getNext);
            }

            var inputs = new object[input.Inputs.Count];
            for (var i = 0; i < inputs.Length; ++i)
            {
                inputs[i] = input.Inputs[i];
            }

            var cacheKey = keyGenerator.CreateCacheKey(input.MethodBase, inputs);

            var cachedResult = MemoryCache.Default.Get(cacheKey);

            if (cachedResult == null)
            {
                var realReturn = getNext()(input, getNext);
                if (realReturn.Exception == null)
                {
                    AddToCache(cacheKey, realReturn.ReturnValue);
                }
                return realReturn;
            }

            var cachedReturn = input.CreateMethodReturn(cachedResult, input.Arguments);
            return cachedReturn;
        }
开发者ID:Warrenn,项目名称:Carbon.MVC,代码行数:30,代码来源:CachingCallHandlerAttribute.cs

示例10: Invoke

        /// <summary>
        /// Implement this method to execute your handler processing.
        /// </summary>
        /// <param name="input">
        /// Inputs to the current call to the target. 
        /// </param>
        /// <param name="getNext">
        /// Delegate to execute to get the next delegate in the handler chain. 
        /// </param>
        /// <returns>
        /// Return value from the target. 
        /// </returns>
        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
        {
            IMethodReturn methodReturn;

            try
            {
                Stopwatch stopwatch;
                string className;
                string methodName;

                className = input.MethodBase.DeclaringType.Name;
                methodName = input.MethodBase.Name;

                stopwatch = new Stopwatch();

                stopwatch.Start();

                methodReturn = getNext()(input, getNext);

                stopwatch.Stop();

                Debug.WriteLine(string.Format("Executing on object {0} method {1} took: {2}ms", className, methodName, stopwatch.ElapsedMilliseconds));
            }
            catch (Exception exception)
            {
                throw;
            }

            return methodReturn;
        }
开发者ID:theoju,项目名称:CleanCode,代码行数:42,代码来源:StopWatchCallHandler.cs

示例11: Invoke

        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
        {
            if (TargetMethodReturnsVoid(input))
            {
                return getNext()(input, getNext);
            }

            object[] inputs = new object[input.Inputs.Count];
            for (int i = 0; i < inputs.Length; ++i)
            {
                inputs[i] = input.Inputs[i];
            }

            string cacheKey = KeyGenerator.CreateCacheKey(input.MethodBase, inputs);

            object[] cachedResult = (object[])HttpRuntime.Cache.Get(cacheKey);

            if (cachedResult == null)
            {
                IMethodReturn realReturn = getNext()(input, getNext);
                if (realReturn.Exception == null)
                {
                    AddToCache(cacheKey, realReturn.ReturnValue);
                }
                return realReturn;
            }

            IMethodReturn cachedReturn = input.CreateMethodReturn(cachedResult[0], input.Arguments);
            return cachedReturn;
        }
开发者ID:huoxudong125,项目名称:WCF-Demo,代码行数:30,代码来源:CachingCallHandler.cs

示例12: Invoke

		public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
		{
			Dictionary<Type, Validator> validators = new Dictionary<Type, Validator>();
			Int32 i = 0;
			ValidationResults results = new ValidationResults();
			IMethodReturn result = null;

			foreach (Type type in input.MethodBase.GetParameters().Select(p => p.ParameterType))
			{
				if (validators.ContainsKey(type) == false)
				{
					validators[type] = ValidationFactory.CreateValidator(type, this.Ruleset);
				}

				Validator validator = validators[type];
				validator.Validate(input.Arguments[i], results);

				++i;
			}

			if (results.IsValid == false)
			{
				result = input.CreateExceptionMethodReturn(new Exception(String.Join(Environment.NewLine, results.Select(r => r.Message).ToArray())));
			}
			else
			{
				result = getNext()(input, getNext);
			}

			return (result);
		}
开发者ID:rjperes,项目名称:DevelopmentWithADot.UnityAop,代码行数:31,代码来源:ValidateAttribute.cs

示例13: Invoke

        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
        {
            ISession session = SessionFactory.GetCurrentSession();

            ITransaction transaction = null;
            if (IsolationLevel == IsolationLevel.Unspecified)
            {
                transaction = session.BeginTransaction();
            }
            else
            {
                transaction = session.BeginTransaction(IsolationLevel);
            }
            Debug.WriteLine("Started transaction");

            IMethodReturn result = getNext()(input, getNext);

            if (result.Exception != null)
            {
                transaction.Rollback();
                Debug.WriteLine("Rolled transaction");
            }
            else
            {
                transaction.Commit();
                Debug.WriteLine("Committed transaction");
            }
            transaction.Dispose();

            return result;
        }
开发者ID:igeorge1982,项目名称:NHibernate,代码行数:31,代码来源:TransactionalCallHandler.cs

示例14: Invoke

        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
        {
            var cacheAttr = GetAttribute(input);
            if (cacheAttr == null) return getNext()(input, getNext);
            string cacheKey = GetCacheKey(cacheAttr, input);

            ICache cacheHandler = CacheProxy.GetCacheHandler(cacheAttr.CacheMode);

            switch (cacheAttr.CacheType)
            {
                case CacheType.Fetch:
                    if (cacheHandler.Contain(cacheAttr.Group, cacheKey))
                    {
                        return input.CreateMethodReturn(cacheHandler.Get(cacheAttr.Group, cacheKey));
                    }
                    else
                    {
                        var r = getNext()(input, getNext);
                        cacheHandler.Add(cacheAttr.Group, cacheKey, r.ReturnValue);
                        return r;
                    }
                case CacheType.Clear:
                    cacheHandler.Remove(cacheAttr.Group, cacheKey);
                    return getNext()(input, getNext);
            }
            return getNext()(input, getNext);
        }
开发者ID:howbigbobo,项目名称:DailyCode,代码行数:27,代码来源:CacheCallHandler.cs

示例15: Invoke

 public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
 {
     TransactionScope trans;
     switch (transAttrib.Option)
     {
         case TransactinOptionEnum.Required:
             trans = new TransactionScope(TransactionScopeOption.Required);
             break;
         case TransactinOptionEnum.RequiresNew:
             trans = new TransactionScope(TransactionScopeOption.RequiresNew);
             break;
         case TransactinOptionEnum.NotSuppoted:
             trans = new TransactionScope(TransactionScopeOption.Suppress);
             break;
         default:
             {
                 trans = null;
                 break;
             }
     }
     var result = getNext()(input, getNext);
     if (trans != null)
     {
         trans.Complete();
     }
     return result;
     //throw new NotImplementedException();
 }
开发者ID:Allen-Zhou,项目名称:AF,代码行数:28,代码来源:TransactionCallHandler.cs


注:本文中的GetNextHandlerDelegate类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。