Exemple #1
0
        private void _AddSubscriber(string type, object go, MethodInfo methodInfo)
        {
            if (!_subscribers.ContainsKey(type))
            {
                _subscribers.Add(type, new List <SubscriberAction>());
            }

            SubscriberAction method =
                (SubscriberAction)Delegate.CreateDelegate(typeof(SubscriberAction), go, methodInfo.Name);

            _subscribers[type].Add(method);
        }
Exemple #2
0
        public void Start()
        {
            var methods = obj.GetType().GetMethods().Where(
                prop => Attribute.IsDefined(prop, typeof(Subscribe)));

            foreach (System.Reflection.MethodInfo m in methods)
            {
                SubscriberAction method = (SubscriberAction)Delegate.CreateDelegate(typeof(SubscriberAction), obj, m.Name);
                Subscribe        attr   = (Subscribe)m.GetCustomAttributes(typeof(Subscribe), true)[0];

                MessageBus.MessageSubscriber subs = new MessageBus.MessageSubscriber();
                subs.action       = method;
                subs.MessageTypes = attr.subscribed_types;

                MessageBus.MessageBus.Instance.AddSubscriber(subs);
            }
        }
Exemple #3
0
 private async void InvokeActionOrRemove(WeakReference <IStoreSubscriber> subscriberReference, SubscriberAction action)
 {
     if (subscriberReference.TryGetTarget(out IStoreSubscriber subscriber))
     {
         await action(subscriber);
     }
     else
     {
         subscribers.TryRemove(subscriberReference, out _);
     }
 }
 public SubscriberEventArgs(SubscriberAction action, EventHandler <EventArgs> e)
 {
     Action           = action;
     SubscribingEvent = e;
 }