Quantcast
Channel: Nove Rosso
Viewing all articles
Browse latest Browse all 10

Reactive Extensions können gesprächig sein

$
0
0

Ok, manchmal sind die Reactive Extensions sehr gesprächig im vergleich zur “klassischen” Programmierung.

Die Aufgabe: Auf das Event NotifyPropertyChanged mit dem PropertyNamen “PicturePath” hören und eine Liste neu füllen.

Klassisch

Handler einhängen

PropertyChanged += HandlePicturePathChanged;

Prüfung in der Methode.

void HandlePicturePathChanged(object sender, PropertyChangedEventArgs e)
{
  if (e.PropertyName != „PicturePath“)
    return;

Reactive

Subscription auf Event-Handler

Observable.FromEventPattern<PropertyChangedEventHandler, PropertyChangedEventArgs>(h => PropertyChanged += h, h => PropertyChanged -= h).
Where(e => e.EventArgs.PropertyName ==
„PicturePath“).Subscribe(_ => HandlePicturePathChanged());

Die Methode kümmert sich nur um “ihre Dinge”.

void HandlePicturePathChanged()
{

Meinung (gefühlt)

Der reaktive Ansatz ist besser im Sinne von “Seperation of Concerns”, dafür aber sehr gesprächig. Da ich ungerne viel tippe bin ich in diesem Fall nicht überzeugt.

Schöner wird es, wenn man auf mehrere Teilmengen des Eventstroms wartet.

var propChanged =

Observable.FromEventPattern<PropertyChangedEventHandler, PropertyChangedEventArgs>(h => PropertyChanged += h, h => PropertyChanged -= h);

propChanged.Where(e => e.EventArgs.PropertyName == „PicturePath“).Subscribe(_ => HandlePicturePathChanged());

propChanged.Where(e => e.EventArgs.PropertyName == „ActiveProject“).Subscribe(_ => HandleActiveProjectChanged());

(Ich mag Rx) 


Viewing all articles
Browse latest Browse all 10