Project Description
Reactive language extensions for C#. Language-integrated data binding.

Quick example

The following code will keep a textbox pink while its text doesn't satisfy a regular expression:

void PinkWhenDoesntMatch(TextBox txt, Regex rgx)
    if (!rgx.IsMatch(txt.Text))
        // it is a data binding, not a plain assignment:
        txt.Background = Brushes.LightPink;

after this method is activated, the data bindings defined in this method are set up.

Do I need it?

Yes, if you have to deal with complex data bindings and need interactivity in your apps. See the problem definition to understand where Reactive C# can be useful.

Current state

At the moment Reactive C# is far from being ready for usage. It is a research project.

The project has two primary branches:
  1. /Main - the core: reactive operator/statement implementation; state change listening
    1. Near to stable, but doesn't have many tests. Perhaps will have breaking changes.
    2. Lacks a decent C# syntax support: currently it is based on Linq expressions (temporarily), that are limited to one-line expressions (no if, block statements, etc)
    3. Has two samples.
  2. /Development/AssemblyRewriting - the syntax support
    1. An assembly rewriter (based on CCI AST) replaces the code marked as reactive with calls to the core.
    2. Has the same samples but with the proposed syntax. They don't work at the moment because the rewriter is not ready.

Last edited Feb 14, 2011 at 8:12 PM by reactive, version 6