RxSourceGenerator

December 10, 2020 ยท View on GitHub

License NuGet

What is this?

This source code generator generates Reactive Extensions methods for class events. For example, there is some class with an event:

public partial class Example
{
    public event Action<int, string, bool> ActionEvent;
}

If you enter the code:

Example example = new  Example();
example.RxActionEvent()

The generator will create a file with extension methods:

using System;
using System.Reactive.Linq;
namespace RxMethodGenerator{
    public static class RxGeneratedMethods{
        public static IObservable<(System.Int32 Item1Int32, System.String Item2String, System.Boolean Item3Boolean)> RxActionEvent(this TestConsoleApp.Example obj)
        {
            if (obj == null) throw new ArgumentNullException(nameof(obj));
            return Observable.FromEvent<System.Action<System.Int32, System.String, System.Boolean>, (System.Int32 Item1Int32, System.String Item2String, System.Boolean Item3Boolean)>(
            conversion => (obj0, obj1, obj2) => conversion((obj0, obj1, obj2)),
            h => obj.ActionEvent += h,
            h => obj.ActionEvent -= h);
        }
    }
}

What does it look like in Visual Studio?