using System; using System.Collections.Generic; using System.Reactive.Linq; using System.Reactive.Subjects; using xDataService.Interfaces; using xDataService.Models; namespace xDataService.Providers { /// /// Some Events can be Raised on Some Actions Happens on Repositories ... /// this is the Base Events Class ... /// /// public abstract class XBaseRepositoryEvents : IXBaseRepositoryEvents { // private readonly ISubject> onAddSubject; private readonly ISubject> onUpdateSubject; private readonly ISubject> onRemoveSubject; // private readonly ISubject>> onAddManySubject; private readonly ISubject>> onUpdateManySubject; private readonly ISubject>> onRemoveManySubject; // protected XBaseRepositoryEvents () { // onAddSubject = new ReplaySubject> (1); onUpdateSubject = new ReplaySubject> (1); onRemoveSubject = new ReplaySubject> (1); // onAddManySubject = new ReplaySubject>> (1); onUpdateManySubject = new ReplaySubject>> (1); onRemoveManySubject = new ReplaySubject>> (1); } // public void AddEvent (XBaseEventModel model) => onAddSubject.OnNext (model); public void UpdateEvent (XBaseEventModel model) => onUpdateSubject.OnNext (model); public void RemoveEvent (XBaseEventModel model) => onRemoveSubject.OnNext (model); // public void AddManyEvent (XBaseEventModel> model) => onAddManySubject.OnNext (model); public void UpdateManyEvent (XBaseEventModel> model) => onUpdateManySubject.OnNext (model); public void RemoveManyEvent (XBaseEventModel> model) => onRemoveManySubject.OnNext (model); // public IObservable> OnAddObservable => onAddSubject.AsObservable (); public IObservable> OnUpdateObservable => onUpdateSubject.AsObservable (); public IObservable> OnRemoveObservable => onRemoveSubject.AsObservable (); // public IObservable>> OnAddManyObservable => onAddManySubject.AsObservable (); public IObservable>> OnUpdateManyObservable => onUpdateManySubject.AsObservable (); public IObservable>> OnRemoveManyObservable => onRemoveManySubject.AsObservable (); } }