Skip to content

Latest commit

History

173 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Observable Event Generator

This project is a .NET source generator which produces IObservable<T> for events contained within a object including all base classes. ObservableEvents generator will convert events within an assembly and create observable wrappers for them, it is based on Pharmacist and uses .NET Source Generator technology.

NuGet Packages

Make sure your project is using the newer PackageReference inside your CSPROJ. The older style is buggy and should be moved away from regardless. See here for discussions how to upgrade.

Install the following packages to start using Observable Events.

NamePlatformNuGet
ReactiveMarbles.ObservableEvents.SourceGeneratorCore - LibaryCoreBadge

Manual Installation

Include the following in your .csproj file

<PackageReferenceInclude="ReactiveMarbles.ObservableEvents.SourceGenerator"Version="1.0.2"PrivateAssets="all" />

The PrivateAssets will prevent the ObservableEvents source generator from being inherited by other projects.

How to use

Instance Based

It injects a class for instance based events into your source code which will expose a extension method called Events(). You need to include the namespace ReactiveMarbles.ObservableEvents to access to the extension method. You can then use this to get IObservable<T> instances from your events.

usingReactiveMarbles.ObservableEvents;publicvoidMyClass: INotifyPropertyChanged
{// Assumes this belong in a class with a event called PropertyChanged.publicvoidRunEvents(){this.Events().PropertyChanged.Subscribe(x =>Console.WriteLine($"The {x} property has changed"));}publiceventPropertyChangedEventHandler PropertyChanged;}

Static Events

You must use include a attribute GenerateStaticEventObservables on the assembly level for a particular class. This will generate a class RxEvents in the same namespace as the specified class.

[assembly:GenerateStaticEventObservablesAttribute(typeof(StaticTest))]publicstaticclassStaticTest{publicstaticeventEventHandler?TestChanged;}

About

No description or website provided.

Topics

Resources

Stars

141 stars

Watchers

5 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages