Exemple #1
0
        public static IDisposable When <T>(Action <T> when, bool includeTracing = true) where T : class
        {
            var eventsObserver = new ImmediateEventsObserver();

            Action <ISystemEvent> onEvent = @event =>
            {
                var type = @event as T;

                if (type != null)
                {
                    when(type);
                }
            };

            eventsObserver.Event += onEvent;
            var list = new List <IObserver <ISystemEvent> >
            {
                eventsObserver
            };

            if (includeTracing)
            {
                list.Add(new ImmediateTracingObserver());
            }
            var old = SystemObserver.Swap(list.ToArray());

            return(new Disposable(() =>
            {
                SystemObserver.Swap(old);
                eventsObserver.Event -= onEvent;
            }));
        }
Exemple #2
0
        public static IDisposable When <T>(Action <T> when, bool includeTracing = true) where T : class
        {
            var observer = new EventsObserver(@event =>
            {
                var type1 = @event as T;

                if (type1 != null)
                {
                    when(type1);
                }
                if (includeTracing)
                {
                    Trace.WriteLine(@event);
                }
            });

            var old = SystemObserver.Swap(new IObserver <ISystemEvent>[] { observer });

            return(new Disposable(() => SystemObserver.Swap(old)));
        }