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.
sábado, 6 de agosto de 2016
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.
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.
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.
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?
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.
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.
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.
martes, 31 de mayo de 2016
Juego Snake en aplicación de consola (I). Definiendo la pantalla.
Códigos de muestra - Ejemplos MSDN. Juego Snake en aplicación de consola
Como no todo va a ser trabajar hoy voy a mostrar cómo podemos desarrollar el clásico juego de la serpiente (Snake) en una simple aplicación de consola.
Como no todo va a ser trabajar hoy voy a mostrar cómo podemos desarrollar el clásico juego de la serpiente (Snake) en una simple aplicación de consola.
lunes, 23 de mayo de 2016
ASP.NET MVC. Crear un ModelBinder personalizado.
Una de las herramientas más útiles de las que disponemos en ASP.NET MVC es el data binding o enlace de datos, que se encarga de transformar de manera automática los datos recibidos del navegador a los tipos de datos usados en los argumentos de las acciones de nuestros controladores.
Sin embargo el proceso de binding que realiza por defecto MVC se nos puede quedar corto cuando utilizamos tipos de datos complejos.
En este artículo voy a mostrar cómo podemos indicarle a MVC cómo debe realizar el enlace de datos con un tipo de datos predeterminado a través de la implementación de un ModelBinder.
El código completo tanto en C# como en Visual Basic .NET está disponible en:
Códigos de muestra - Ejemplos MSDN. Crear un Model Binder personalizado
Sin embargo el proceso de binding que realiza por defecto MVC se nos puede quedar corto cuando utilizamos tipos de datos complejos.
En este artículo voy a mostrar cómo podemos indicarle a MVC cómo debe realizar el enlace de datos con un tipo de datos predeterminado a través de la implementación de un ModelBinder.
El código completo tanto en C# como en Visual Basic .NET está disponible en:
Códigos de muestra - Ejemplos MSDN. Crear un Model Binder personalizado
martes, 17 de mayo de 2016
Windows Forms. Pasar datos entre formularios
El código completo tanto en C# como en Visual Basic .NET está disponible en:
Códigos de muestra - Ejemplos MSDN. Comunicación entre formularios Windows Forms
Esta es una consulta muy habitual: ¿Cómo pasar datos entre dos formularios?
Evidentemente hay múltiples formas de hacerlo y elegir la mejor depende en gran medida del caso particular. En este artículo mostraré un ejemplo de cómo podemos solucionar uno de los escenarios más repetidos y que puede ajustarse a muchos de los escenarios que se plantean habitualmente: crear un formulario para editar los datos de una fila de un DataGridView.
Códigos de muestra - Ejemplos MSDN. Comunicación entre formularios Windows Forms
Esta es una consulta muy habitual: ¿Cómo pasar datos entre dos formularios?
Evidentemente hay múltiples formas de hacerlo y elegir la mejor depende en gran medida del caso particular. En este artículo mostraré un ejemplo de cómo podemos solucionar uno de los escenarios más repetidos y que puede ajustarse a muchos de los escenarios que se plantean habitualmente: crear un formulario para editar los datos de una fila de un DataGridView.
lunes, 11 de enero de 2016
Juego de Ajedrez (III). Definiendo las piezas
Artículos anteriores:
Juego de Ajedrez (I). Introducción a la Programación Orientada a Objetos
Juego de Ajedrez (II). Creando la estructura del proyecto
El código completo tanto en C# como en Visual Basic .NET está disponible en:
Códigos de muestra - Ejemplos MSDN. Juego de Ajedrez
Una vez creada la estructura de clases del proyecto voy a definir la funcionalidad de cada una de las piezas del juego. Para ello crearé una clase para cada tipo de pieza que herede de la clase abstracta ChessPiece.
Juego de Ajedrez (I). Introducción a la Programación Orientada a Objetos
Juego de Ajedrez (II). Creando la estructura del proyecto
El código completo tanto en C# como en Visual Basic .NET está disponible en:
Códigos de muestra - Ejemplos MSDN. Juego de Ajedrez
Una vez creada la estructura de clases del proyecto voy a definir la funcionalidad de cada una de las piezas del juego. Para ello crearé una clase para cada tipo de pieza que herede de la clase abstracta ChessPiece.
sábado, 2 de enero de 2016
Microsoft MVP 2016
Ayer recibí un correo de Microsoft que me hizo una gran ilusión:
Estimado/a Asier Villanueva,
Enhorabuena. Nos complace anunciarle el Premio MVP de Microsoft® de 2016. Este nombramiento se concede a los líderes excepcionales de la comunidad técnica que comparten de forma activa con otras personas su profundo conocimiento técnico así como su experiencia en el uso de la tecnología. Le agradecemos especialmente la contribución que ha realizado en las comunidades técnicas en el área de Visual Studio and Development Technologies a lo largo del pasado año.
Es un gran orgullo pasar a pertenecer a un colectivo como es el de los MVP de Microsoft.
Este reconocimiento me anima mucho en la medida en la que es la constatación de que el trabajo que vengo realizando resulta realmente útil a otros miembros de la comunidad de desarrolladores.
En adelante espero poder seguir aportando como hasta ahora o incluso más (si el tiempo libre me lo permite) y estar a la altura de lo que este galardón significa.
Para aquellos que no conozcáis los premios MVP de Microsoft y queráis obtener más información sobre ellos aquí os dejo el link:
Microsoft MVP Award
Feliz año 2016. Espero que vuestra entrada del nuevo año haya sido tan gratificante como la mía, y que a partir de ahora no haga más que mejorar.
Estimado/a Asier Villanueva,
Enhorabuena. Nos complace anunciarle el Premio MVP de Microsoft® de 2016. Este nombramiento se concede a los líderes excepcionales de la comunidad técnica que comparten de forma activa con otras personas su profundo conocimiento técnico así como su experiencia en el uso de la tecnología. Le agradecemos especialmente la contribución que ha realizado en las comunidades técnicas en el área de Visual Studio and Development Technologies a lo largo del pasado año.
Es un gran orgullo pasar a pertenecer a un colectivo como es el de los MVP de Microsoft.
Este reconocimiento me anima mucho en la medida en la que es la constatación de que el trabajo que vengo realizando resulta realmente útil a otros miembros de la comunidad de desarrolladores.
En adelante espero poder seguir aportando como hasta ahora o incluso más (si el tiempo libre me lo permite) y estar a la altura de lo que este galardón significa.
Para aquellos que no conozcáis los premios MVP de Microsoft y queráis obtener más información sobre ellos aquí os dejo el link:
Microsoft MVP Award
Feliz año 2016. Espero que vuestra entrada del nuevo año haya sido tan gratificante como la mía, y que a partir de ahora no haga más que mejorar.
Suscribirse a:
Entradas (Atom)