protected override void RegisterPorts()
        {
            delegateType = delegateType != null ? delegateType : typeof(Delegate);
            delegatePort = AddValueOutput(delegateType.FriendlyName(), "Delegate", delegateType, () => { return(reflectedEvent.AsDelegate()); });
            callbackPort = AddFlowOutput("Callback");
            if (delegateType == typeof(Delegate))
            {
                return;
            }

            if (reflectedEvent == null)
            {
                reflectedEvent = new ReflectedDelegateEvent(delegateType);
                reflectedEvent.Add(Callback);
            }

            var parameters = delegateType.RTGetDelegateTypeParameters();

            for (var _i = 0; _i < parameters.Length; _i++)
            {
                var i         = _i;
                var parameter = parameters[i];
                AddValueOutput(parameter.Name, "arg" + i, parameter.ParameterType, () => { return(args[i]); });
            }
        }
 ///Start listening to a reflected delegate event using this wrapper
 public void StartListening(ReflectedDelegateEvent reflectedEvent, ReflectedDelegateEvent.DelegateEventCallback callback)
 {
     if (reflectedEvent == null || callback == null)
     {
         return;
     }
     reflectedEvent.Add(callback);
     eventInfo.AddEventHandler(instance, reflectedEvent.AsDelegate());
 }
        public override void OnGraphStarted()
        {
            if (eventInfo == null)
            {
                return;
            }

            instance = null;
            if (!isStaticEvent)
            {
                instance = instancePort.value;
                if (instance == null)
                {
                    Fail("Target is null");
                    return;
                }
            }

            eventInfo.AddEventHandler(instance, reflectedEvent.AsDelegate());
            reflectedEvent.Add(OnEventRaised);
        }