public static IObservable <TraceEvent> WhenTraceEvent <TLocation>(this XafApplication application, Expression <Func <TLocation, object> > expression,
                                                                          RXAction rxAction = RXAction.All)
        {
            var name = expression.GetMemberInfo().Name;

            return(application.WhenTraceEvent(typeof(TLocation), rxAction).Where(_ => _.Method == name));
        }
 public static IObservable <ITraceEvent> When(this IObservable <ITraceEvent> source, Type location,
                                              RXAction rxAction, params string[] methods)
 {
     return(source.Where(_ => location == null || _.Location == location.Name)
            .Where(_ => !methods.Any() || methods.Contains(_.Method))
            .Where(_ => rxAction == RXAction.All || _.RXAction.HasAnyFlag(rxAction)));
 }
 public static IObservable <TraceEvent> WhenTraceEvent(this XafApplication application, Type location = null, RXAction rxAction = RXAction.All, params string[] methods)
 {
     return(SavedTraceEvent.When(location, rxAction, methods).Cast <TraceEvent>());
 }
 public static IObservable <ITraceEvent> WhenTrace(this XafApplication application, Type location = null, RXAction rxAction = RXAction.All, params string[] methods)
 {
     return(application.Modules.ToTraceSource().ToObservable().SelectMany(_ =>
                                                                          _.traceSource.Listeners.OfType <ReactiveTraceListener>().ToObservable().SelectMany(listener => listener.EventTrace))
            .When(location, rxAction, methods));
 }