Ejemplo n.º 1
0
        public object Invoke(object obj, object[] arguments)
        {
#if LOGGING && !SILVERLIGHT
            if (log.IsDebugEnabled)
            {
                log.Debug(__Res.GetString(__Res.Invoke_Method, _methodInfo.DeclaringType.FullName + "." + _methodInfo.Name));
            }
#endif

            object result = _methodInfo.Invoke(obj, arguments);

            object[] attributes = _methodInfo.GetCustomAttributes(false);
            if (attributes != null && attributes.Length > 0)
            {
                InvocationManager invocationManager = new InvocationManager();
                invocationManager.Result = result;
                for (int i = 0; i < attributes.Length; i++)
                {
                    Attribute attribute = attributes[i] as Attribute;
                    if (attribute is IInvocationCallback)
                    {
                        IInvocationCallback invocationCallback = attribute as IInvocationCallback;
                        invocationCallback.OnInvoked(invocationManager, _methodInfo, obj, arguments, result);
                    }
                }
                for (int i = 0; i < attributes.Length; i++)
                {
                    Attribute attribute = attributes[i] as Attribute;
                    if (attribute is IInvocationResultHandler)
                    {
                        IInvocationResultHandler invocationResultHandler = attribute as IInvocationResultHandler;
                        invocationResultHandler.HandleResult(invocationManager, _methodInfo, obj, arguments, result);
                    }
                }
                return(invocationManager.Result);
            }
            return(result);
        }
Ejemplo n.º 2
0
        public object Invoke(object obj, object[] arguments)
        {
            if (log.get_IsDebugEnabled())
            {
                log.Debug(__Res.GetString("Invoke_Method", new object[] { this._methodInfo.DeclaringType.FullName + "." + this._methodInfo.Name }));
            }
            object result = this._methodInfo.Invoke(obj, arguments);

            object[] customAttributes = this._methodInfo.GetCustomAttributes(false);
            if ((customAttributes != null) && (customAttributes.Length > 0))
            {
                int               num;
                Attribute         attribute;
                InvocationManager invocationManager = new InvocationManager {
                    Result = result
                };
                for (num = 0; num < customAttributes.Length; num++)
                {
                    attribute = customAttributes[num] as Attribute;
                    if (attribute is IInvocationCallback)
                    {
                        (attribute as IInvocationCallback).OnInvoked(invocationManager, this._methodInfo, obj, arguments, result);
                    }
                }
                for (num = 0; num < customAttributes.Length; num++)
                {
                    attribute = customAttributes[num] as Attribute;
                    if (attribute is IInvocationResultHandler)
                    {
                        (attribute as IInvocationResultHandler).HandleResult(invocationManager, this._methodInfo, obj, arguments, result);
                    }
                }
                return(invocationManager.Result);
            }
            return(result);
        }