22/12/2009 23:41 El Bruno

[VSTS2010] Reactive Extension Generator (una must have tool para que nuestro código quede mas simple)

image

Buenas,

ya sé que seguramente estarás trabajando con Visual Studio 2010 y que después de tirar miles de líneas de código, cuando haces esos momentos de reflexión introspectiva (un refactoring mental) siempre piensas como puedes mejorar una u otra cosa. Pues esta herramienta sirve para ver como plantear de manera diferente algo a lo que estamos muy acostumbrados: el trabajo con eventos.

Utilizando esta extensión para Visual Studio 2010, es posible aprovechar toda la potencia de LINQ para gestionar los eventos propios de .Net, ya que la misma se encarga de generar un proxy sobre un ensamblado .Net que expone una interfaz síncrona sobre los eventos (asíncronos) para trabajar con la misma (no sé si proxy es la palabra correcta, creo que no)

Dicho de otra manera, sobre una de las referencias de un proyecto, la seleccionamos y desplegando el menú contextual seleccionamos [Create Reactive Extensions]

Executing the command

y un nuevo ensamblado se crea automáticamente, donde se expone el proxy sobre los eventos del mismo.

Reference added

Una vez generado el siguiente código autoexplica el funcionamiento de Rx

var mouseMoves = from mm in mainCanvas.Reactive().MouseMove
                 let location = mm.EventArgs.GetPosition(mainCanvas)
                 select new { location.X, location.Y };
 
var mouseDiffs = mouseMoves
    .Skip(1)
    .Zip(mouseMoves, (l, r) => new { X1 = l.X, Y1 = l.Y, X2 = r.X, Y2 = r.Y });
 
var mouseDrag = from _ in mainCanvas.Reactive().MouseLeftButtonDown
                from md in mouseDiffs.Until(
                    mainCanvas.Reactive().MouseLeftButtonUp)
                select md;
 
var mouseSub = mouseDrag.Subscribe(item =>
{
    var line = new Line
    {
        Stroke = Brushes.LightSteelBlue,
        X1 = item.X1,
        X2 = item.X2,
        Y1 = item.Y1,
        Y2 = item.Y2,
        StrokeThickness = 5
    };
    mainCanvas.Children.Add(line);
});

 

Más información:

Saludos @ Morfeo’s place

El Bruno

Pagina de producto: http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx

Descarga: http://visualstudiogallery.msdn.microsoft.com/en-us/0791089a-4570-4f21-b5ee-78aba7e80651

Archivado en: ,,,
Comparte este post:

# [VSTS2010] Listado de Novedades (XII)

Tuesday, January 19, 2010 1:46 PM by El Bruno

Buenas, nuevo recopilatorio con los posts que voy escribiendo sobre las novedades de Visual Studio 2010