sábado, 6 de agosto de 2016

C# vs VB: TypeOf, typeof, GetType... Vaya lío

Cada vez que tengo que pasar código que maneja tipos de datos de C# a VB o viceversa tengo que consultar las equivalencias entre las diferentes instrucciones de los lenguajes: typeof, TypeOf, is, GetType... No sé porqué nunca consigo recordarlo.

Siempre pienso que debería escribir una entrada en el blog para ver si así acabo de retenerlo y, si no, al menos tener un sitio rápido donde puedo consultarlo. Como sé que no soy al único que le pasa me he decidido por fin a ponerlo por escrito.

jueves, 28 de julio de 2016

ASP.NET MVC. ModelBinderProvider para Tipos Genéricos (y II). KeyValuePair Data Binding

Descargar código de ejemplo
Códigos de muestra - Ejemplos MSDN. ModelBinderProvider para tipos genéricos

Artículos anteriores:
ASP.NET MVC. ModelBinderProvider para Tipos Genéricos (I). Creando el escenario

En el artículo anterior vimos cómo MVC no es capaz de realizar de forma automática el enlace de datos para elementos de tipo KeyValuePair.

ASP.NET MVC trata de utilizar el ModelBinder configurado por defecto, el DefaultModelBinder, para realizar el enlace de datos. La forma de actuar con tipos complejos es siempre la misma: intenta crear una instancia del elemento buscando e invocando un constructor sin argumentos y, a continuación, trata de asignar valores a cada una de sus propiedades.

En el caso de KeyValuePair el tipo sí que tiene un constructor sin argumentos por lo que el DefaultModelBinder será capaz de crear la instancia del elemento, sin embargo las propiedades Key y Value son de sólo lectura, por lo que no será capaz de asignar los valores a las propiedades.

En este artículo veremos cómo realizar el enlace de datos para este tipo de datos.

lunes, 25 de julio de 2016

ASP.NET MVC. ModelBinderProvider para Tipos Genéricos (I). Creando el escenario

Descargar código de ejemplo
Códigos de muestra - Ejemplos MSDN. ModelBinderProvider para tipos genéricos

En un post anterior mostré cómo podíamos crear y registrar un ModelBinder personalizado en una aplicación MVC (ASP.NET MVC. Crear un ModelBinder personalizado). Sin embargo, el tipo de datos que indicamos a MVC a la hora de registrar el ModelBinder debe ser un tipo de datos específico, no podemos indicar un tipo genérico.

Entonces, ¿cómo podemos crear un ModelBinder para un tipo de datos genérico que ASP.NET MVC no es capaz de enlazar por defecto?

Por suerte ASP.NET MVC nos permite también la opción de registrar proveedores de ModelBinders o ModelBinderProviders los cuales se encargan de crear las instancias de ModelBinders para ciertos tipos de datos.

En este artículo mostraré cómo crear y registrar un ModelBinderProvider para el tipo genérico KeyValuePair<TKey, TValue>. Veremos porqué ASP.NET MVC no es capaz de enlazarlo por defecto, cómo crear el ModelBinder para el tipo y cómo podemos indicarle a MVC que debe utilizar nuestro ModelBinder para enlazar estos tipos de datos utilizando un ModelBinderProvider.

sábado, 16 de julio de 2016

Visual Studio. Cargar ensamblados propios en la ventana C# Interactivo

En Visual Studio 2015 aparece una nueva ventana que nos permite probar código y evaluar su resultado sin necesidad de arrancar y depurar nuestro proyecto: la ventana C# interactivo.

Acceso a la ventana C# interactivo

Esta ventana nos permite ejecutar de forma inmediata código C#, incluso haciendo uso de las librerías de clases de .NET Framework o utilizar expresiones LINQ. Pero ¿cómo podemos ejecutar código de nuestras propias librerías o proyectos?

sábado, 18 de junio de 2016

Visual Studio. Buscar y reemplazar con expresiones regulares.

Seguro que las funciones de "Buscar" y "Buscar y reemplazar" del Visual Studio se encuentran entre las funciones que más utilizas dentro del entorno de desarrollo. Sin embargo, si no estás haciendo uso de la posibilidad de usar expresiones regulares, estás utilizando una parte mínima de la potencialidad de estas funciones.

En este post voy a mostrar un ejemplo de cómo puedes realizar búsquedas y cambios masivos en tu código gracias al uso de expresiones regulares.

Créeme, aunque te parezca que usas mucho estas opciones, no es nada comparado con lo que las utilizaras una vez que cojas un poco de soltura con las expresiones regulares,

Hace poco, por ejemplo, en el proyecto en el que me encuentro decidimos establecer como privadas una serie de funciones que definíamos como públicas en cientos de objetos JavaScript diferentes de nuestra aplicación. Un "Buscar y reemplazar" con una expresión regular y listo, en unos segundos estaba hecho el cambio, ahorrándonos un montón de horas de tedioso y mecánico trabajo.

miércoles, 1 de junio de 2016

Juego Snake en aplicación de consola (y II). La serpiente.

Códigos de muestra - Ejemplos MSDN. Juego Snake en aplicación de consola

En el artículo anterior, Juego Snake en aplicación de consola (I). Definiendo la pantalla, vimos cómo crear la pantalla inicial del juego Snake, en éste veremos cómo crear la serpiente, dotarla de movimiento y mostrar comida que pueda ir comiendo y aumentando la puntuación y su longitud.

De esta forma completaremos la funcionalidad básica del juego.