Пример #1
0
        /// <summary>
        /// Captura todos os eventos da classe
        /// e adiciona escuta para os objetos do SAP
        /// e pega o formulário do SAP
        /// </summary>
        internal void GetEvents()
        {
            foreach (var method in this.GetType().GetMethods())
            {
                foreach (var item in Attribute.GetCustomAttributes(method))
                {
                    if (item is FormSystemEventAttribute)
                    {
                        if (method.GetParameters().Length != 2 ||
                            method.GetParameters()[0].ParameterType != typeof(ItemEvent) ||
                            method.GetParameters()[1].ParameterType != typeof(Boolean)
                            )
                        {
                            throw new Exception("Os métodos que escutam eventos do SAP devem ser 2 parametros (  EventArItemEvent , bool )");
                        }

                        var customAtributte = item as FormSystemEventAttribute;

                        MethodEvents.Add(new MethodInfoEvent
                        {
                            Attribute  = customAtributte,
                            MethodInfo = method,
                        });
                    }
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Faz um evento ser disparado
        /// </summary>
        /// <param name="pVal1">Argumentos do Eventos que está sendo disparado</param>
        /// <param name="BubbleEvent">Caso queira parar o evento set false, true o evento continua</param>
        internal void DoEvent(Nampula.UI.ItemEvent pVal1, out bool BubbleEvent)
        {
            BubbleEvent = true;

            var methodInfo = MethodEvents.FindAll(
                p => p.Attribute.EventType == pVal1.EventType &
                p.Attribute.ItemID == pVal1.ItemUID &
                p.Attribute.BeforeAction == pVal1.BeforeAction);

            var parameters = new Object[] { pVal1, BubbleEvent };

            foreach (var methodInfoEvent in methodInfo)
            {
                methodInfoEvent.MethodInfo.Invoke(this, parameters);

                if (!Convert.ToBoolean(parameters[1]))
                {
                    BubbleEvent = false;
                    break;
                }
            }

            //throw new NotImplementedException( );
        }