Entradas

Conseguir información de un Objeto y de un método con Expresiones Lambda.

En algún momento en nuestra vida de programador, vamos a necesitar extraer el nombre de la clase de algún objeto o de un método. Es ahí donde estos 2 métodos nos pueden ayudar. El primero recibe un objeto y extrae el nombre de la clase: protected string GetClassName( Expression<Func<object>> classToTest ) { string className = classToTest.Body.Type.Name; //Add something interesting! Return className; } Y para llamarlo usaremos la siguiente sintaxis: public class SomeClass { public int SomeMethod( object value ) { string name=this.GetClassName( ( ) => this ); } // Other Methods ... } Nuestro segundo método, recibe un método, que no tiene parámetros y obtiene su nombre y clase a la que pertenece: protected string GetMethodName( Expression<Action> methodToTest ) { string className = ( methodToTest.Body as MethodCallExpression ) .Method.DeclaringType.Name;...

Dialogo Modal en MVVM

Imagen
Los Diálogos Modales están entre los elementos más complejos de usar en el patrón MVVM principalmente por la necesidad de separación de ocupaciones que se debe de cumplir. Ciertamente se puede manejar de una manera fácil el manejo de los Diálogos Modales desde la vista y en el caso que deseemos hacer la llamada desde el ViewModel, podemos usar eventos, pero ciertamente no es lo recomendable. Para solucionar el problema se tiene las siguientes opciones: -           Usar el patrón Mediador -           Implementar el dialogo como un servicio En el presente post voy a usar la segunda opción pero omitiendo más que todo el uso del Inversor de Control, ciertamente no es una solución al 100% completa por que se genera tiene un ratio mayor de acoplabilidad, pero hay que tomar en cuenta que en la mayoría de los proyectos no es primordial tal característica y la inversión de tiempo requerida (más q...

Compilar desde Codigo Fuente GCC XML

Imagen
GCC XML es una herramienta utilizada para realizar una descripción XML de un programa escrito en C++, desde una representación interna de GCC. Al dia de hoy soporta las siguientes versiones de compiladores: GCC 4.2, 4.1, 4.0, 3.4, 3.3 Microsoft Visual C++ 2010, 2008, 2005, 2003, 2002, 6 (SP5). El sitio oficial del proyecto es http://www.gccxml.org/HTML/Index.html , desafortunadamente la última versión del proyecto, empaquetada en un instalador data del año 2004, por lo cual para poderlo usar deberemos de hacerlo desde el código fuente, que está 100% actualizado (a la fecha 04/04/2012). [UPDATE 26/05/2012] El instalador de GCC XML 0.9.0 lo pueden encontrar aqui . Para generar la última versión del proyecto deberemos bajarnos el código fuente que está ubicado en: cvs -d :pserver:anoncvs@www.gccxml.org:/cvsroot/GCC_XML login Para bajar el código en entorno Windows sugiero usar la herramienta TortoiseCVS que la pueden bajar de la siguiente dirección: http://www.tortoise...

Error 1 fatal error C1083: Cannot open precompiled header file: 'Debug\xxx.pch'

Imagen
El error C1083 se presenta cuando uno trata de compilar un proyecto en C++ y ha habido un cambio; bueno cuando uno se dirige a la linea que supuestamente ocasiona el error en el codigo, Visual Studio nos lleva a la linea: #include "stdafx.h" Esto se debe simplemente a que Visual Studio genera un archivo *.pch que no es mas que un " Precompiled Header " que tiene la utilidad de reducir el tiempo de compilacion, por lo cual cuando reconstruimos/limpiamos/contruimos y hemos modificado el archivo stdafx.h tendremos el error mencionado, para solucionarlo solo basta con cambiar la opcion Precompiled Header del proyecto en Visual Studio de la opcion "Use (/Yu)" a "Create (/Yc)" como se aprecia en la siguiente imagen: Suerte!

Libro Gratis: Introducing Microsoft SQL Server 2012

El libro Introducing Microsoft SQL Server 2012 , by Ross Mistry ( @RossMistry ) and Stacia Misner ( @StaciaMisner ) esta disponible de forma gratuita aqui !. La tabla de contenidos es la siguiente: PART I DATABASE ADMINISTRATION (by Ross Mistry) 1. SQL Server 2012 Editions and Engine Enhancements 2. High-Availability and Disaster-Recovery Enhancements 3. Performance and Scalability 4. Security Enhancements 5. Programmability and Beyond-Relational Enhancements PART II BUSINESS INTELLIGENCE DEVELOPMENT (by Stacia Misner) 6. Integration Services 7. Data Quality Services 8. Master Data Services 9. Analysis Services and PowerPivot 10. Reporting Services Suerte!

El Patrón Model - View - ViewModel ( MVVM )

Imagen
El patron Model - View - ViewModel fue concebido por John Gossman allá por el año 2005 en un post de su blob titulado "Introduction to Model/View/ViewModel pattern for building WPF apps"( http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx ), siendo este una adaptación del patrón Presentation Model ( http://martinfowler.com/eaaDev/PresentationModel.html ) propuesto por Martin Fowlers para tecnologías .NET como XAML(como se conoce ahora al conjunto de herramientas para desarrollar en Windows 8), WPF y Silverlight. Este patrón junto a otros mas conocidos como MVC o MVP tiene por objetivo simplificar las tareas de desarrollo y mantenimiento del software escrito con estos a través de la división de ocupaciones, por lo cual alguien que ya haya trabajado previamente con alguno de los patrones previamente mencionados, le parecerá bastante familiar MVVM. Model El modelo, dentro de MVVM es el encargado de representar el modelo del negocio, proveyendo de esta ma...

Enviar Parámetros Personalizados a un Evento

En algún momento vamos a necesitar enviar parámetros a un evento, presupongamos que tenemos el siguiente escenario, tenemos una vista en WPF (XAML, con Code – Behind) y tenemos una clase llamada Persona. Supongamos que cuando sucede un evento determinado, como por ejemplo el cambio de alguna de sus propiedades, debe de avisarle a la vista que despliegue un MessageBox en pantalla con un mensaje. Para poder conseguir esto haremos lo siguiente; crearemos una nueva clase llamada "EventArgsWithMessage” que heredara de EventArgs: public class EventArgsWithMessage : EventArgs { public string Message{ get ; set ;} public EventArgsWithMessage( string _message) { this .Message=_message; } } El siguiente paso sera crear un “EventHandler” en nuestra clase Persona, de la siguiente manera: public event EventHandler ShowErrorMessage; Como siguiente paso dentro de la misma clase usaremos el siguiente código para realizar la ll...