Ver por etiquetas

Todas las etiquetas » .net (RSS)

Generar archivos Excel como un señor con ClosedXml

Venga, lo confieso: yo también he generado desde mis aplicaciones contenidos HTML y los he enviado al cliente en un archivo con extensión XLS, incluso modificando el content-type, para que pareciera un documento de hoja de cálculo. Durante años. Y también le he dicho a mis clientes que el molesto mensaje que aparece al abrirlo desde Excel, el que indica que el contenido del archivo no coincide con la extensión del mismo, es algo normal. Pero esto se acabó...

ASP.NET MVC 4 y los nuevos atributos de validación de .NET 4.5

Un post rapidito. Según puede consultarse en MSDN , ya tenemos confirmado que la versión 4.5 de .NET framework vendrá acompañada de un nuevo conjunto de atributos de validación para aplicar a las propiedades del Modelo en el espacio de nombres System.ComponentModel.DataAnnotations : CreditCardAttribute , que puede ser utilizado para validar números de tarjeta de crédito. EmailAddressAttribute , que validará direcciones de correo electrónico...
Publicado por José M. Aguilar | con no comments

Validación manual con Data Annotations

Habitualmente asociamos la validación de entidades basadas en anotaciones de datos, o data annotations , a tecnologías como dynamic data o ASP.NET MVC, y estamos acostumbrados a que la validación se realice de forma automática, pero nada más lejos de la realidad. Podemos utilizar data annotations desde cualquier tipo de aplicación .NET (Webforms, Winforms, WPF, Consola, o cualquier otra en la que tengamos disponible System.ComponentModel.DataAnnotations ...
Publicado por José M. Aguilar | con no comments
Archivado en: ,,

Parámetros opcionales: úsense con precaución

Los parámetros opcionales son una interesante ayuda que hace tiempo que está presente en otros lenguajes como Visual Basic .NET, y ha sido introducida en la versión 4.0 de C#, para alegría de muchos. A grandes rasgos, esta característica nos permite especificar valores por defecto para los parámetros de nuestros métodos, ahorrándonos tiempo de codificación: class Program { public static void Main( string [] args) { Muestra(); // Imprime...
Publicado por José M. Aguilar | 6 comment(s)
Archivado en: ,,,

¿Esa enumeración está vacía?

Casualmente encuentro en el post de Chris Eargle “ Any() versus Count() ” un tema del que pensaba escribir hace tiempo y al final dejé en el tintero: ¿cómo podemos determinar si una enumeración está vacía? Vale, es bien fácil, una enumeración está vacía si tiene cero elementos . Si trabajamos con un array, podemos consultar la propiedad Length ; si se trata de una colección, podemos utilizar la propiedad Count...

NDepend 3, radiografía tu código aún más fácilmente

Hace casi un año hablaba de la segunda versión de NDepend , una herramienta capaz de ayudaros a mejorar nuestro código, analizando cientos de aspectos, métricas y reglas a nivel de fuentes y ensamblados. Recientemente se ha publicado la tercera versión de NDepend , que ofrece interesantes novedades respecto a las anteriores, como la integración absoluta con Visual Studio, el soporte para soluciones multi-proyecto, potentes mecanismos de búsqueda, edición...

Forzar validación desde cliente con ASP.NET Webforms

Cada vez que tengo que forzar la validación de los datos de un formulario Webforms mediante javascript me veo obligado a preguntarle a Google, ese que todo lo sabe, cómo era el nombre de la función. Cosas de la edad, supongo ;-) Así que, a modo de auto-recordatorio y con la intención de que pueda ser útil a alguien más, ahí va: la función se llama Page_ClientValidate() . Retorna “true” si, una vez evaluados todos los validadores...

Fluent NHibernate 1.0 publicado

A finales del agosto, James Gregory anunció la publicación de la versión 1.0 de Fluent NHibernate , una librería que ofrece una ágil alternativa a los espesos archivos de configuración de NHibernate . Su API permite configurar desde el código de una aplicación, de forma fluida la mayoría de las veces, los mapeos entre la estructura de una base de datos relacional y el modelo de objetos que utiliza. Así, evitaremos la manipulación...

Inicializar a null propiedades sin tipo

No es algo que ocurra muy frecuentemente, pero en determinadas ocasiones puede ser útil inicializar una propiedad de un tipo anónimo con el valor nulo, por ejemplo: var conductor = new { Nombre = ”Marisa”, Edad = 34, Auto = “Renault Megane” }; var peaton = new { Nombre = “Juan”, Edad = 43, Auto = null }; En el código anterior se entiende que lo que queremos indicar estableciendo la propiedad Auto a null es que la persona que estamos representando...
Publicado por José M. Aguilar | 2 comment(s)
Archivado en: ,,,

Linq para NHibernate, versión 1.0

Hace unas semanas, Oren Eini (o Ayende Raihen, como se le suele conocer) comunicaba la liberación de la versión 1.0 del proveedor de Linq para NHibernate, una característica altamente demandada por los usuarios desde la aparición del lenguaje de consulta integrado en .NET. Aunque será incluido como parte del producto NHibernate en versiones venideras, han decidido liberar la actual release del proveedor como paquete independiente para que pueda comenzar a utilizarse...

Métodos condicionales en .NET

En la plataforma .NET existen distintas formas de hacer que una llamada a un método sea omitida bajo determinadas circunstancias. Por ejemplo, los métodos parciales permiten, en C# 3.0 y VB 9.0, que el compilador omita la llamada a funciones no implementadas. También existe la posibilidad de utilizar las clásicas directivas (como # if … # endif ) para incluir código cuando existan constantes de compilación. Es menos conocida, sin embargo, la existencia...

Generación de PDF desde .NET usando formularios

Un post en .NET Answers me ha recordado que hace tiempo tenía pendiente escribir una entrada para comentar la técnica que he utilizado en más de una ocasión para generar documentos PDF desde mis aplicaciones .NET de forma muy sencilla, y que puede aplicarse en escenarios donde se conozca de antemano el diseño del documento a imprimir y sólo sea necesario introducir información concreta en espacios muy definidos. Un caso muy habitual es el rellenado...

Cómo crear un ControllerFactory personalizado para ASP.NET MVC

Hace unas semanas, en el post Cambiar la ubicación de las vistas en ASP.NET MVC estuvimos viendo cómo era posible aprovechar la flexibilidad del framework para saltarse las convenciones respecto a la ubicación de los archivos de vistas (.aspx, .ascx y .master). En esta ocasión vamos a seguir profundizando en los puntos de extensión del framework, centrándonos en la facilidad con la que podemos modificar el ControllerFactory , que es el componente encargado...

Plantillas de proyectos ASP.NET MVC 1.0 para NUnit

Joe Cartano, perteneciente al Visual Web Development Team de Microsoft, ha publicado en el blog oficial ( Visual Web Developer Team Blog ) un post anunciando que ha actualizado la plantilla que permite crear directamente proyectos ASP.NET MVC con tests unitarios NUnit . Así, una vez instalado, al crear un proyecto de tipo ASP.NET MVC nos aparecerá un cuadro de diálogo como el siguiente, en el que se nos brindará la oportunidad de crear en la solución un proyecto...

NDepend, analiza a fondo tu código

Existen numerosas aplicaciones que permiten analizar nuestros desarrollos con el objetivo final de incrementar la calidad de los mismos. FxCop , por ejemplo, es capaz de analizar los ensamblados y avisarnos cuando se encuentra con incumplimientos de las pautas de diseño para desarrolladores de librerías para .Net Framework ( Design Guidelines for Class Library Developers ). También hace tiempo comenté por aquí la disponibilidad de Microsoft Source Analysis for C#...

Métodos genéricos en VB.NET

Al escribir el post " Métodos genéricos en C# ", estuve pensando en tratar este tema también en VB.NET de forma simultánea, pero al final preferí limitarme a C# para no hacer la entrada más extensa de lo que ya iba a resultar de por sí. Esto, unido a un comentario de Julio sobre el propio post en el que preguntaba si existía algo parecido en Visual Basic .NET, ha hecho que reedite el mismo, pero centrándome esta vez en dicho lenguaje. Los métodos genéricos son interesantes herramientas...

Enviar mensajes con imágenes incrustadas desde .NET

Es habitual que las aplicaciones que desarrollamos necesiten enviar emails: alertas, notificaciones automáticas, formularios de contacto, o envíos masivos de información, entre otros, son ejemplos de utilización muy habituales. Y en estos casos la inclusión de imágenes incrustadas suele ser un requisito fundamental cuando se trata de enviar contenidos con formato HTML, de forma que, aunque normalmente se incrementa de forma notable el tamaño del paquete a enviar, se evita que los clientes tengan...
Publicado por José M. Aguilar | 2 comment(s)

Métodos genéricos en C#

Los métodos genéricos son interesantes herramientas que están con nosotros desde los tiempos del .NET Framework 2.0 y pueden resultarnos muy útiles de cara a la construcción de frameworks o librerías reutilizables. Podríamos considerar que un método genérico es a un método tradicional lo que una clase genérica a una tradicional; por tanto, se trata de un mecanismo de definición de métodos con tipos parametrizados, que nos ofrece la potencia del tipado fuerte en sus parámetros y devoluciones aun sin...

Libro: ADO.NET Entity Framework. Aplicaciones y servicios centrados en datos

Como muchos otros desarrolladores, soy un sufridor del chirriar entre los modelos relacionales y de objetos ( desajuste de impedancias lo llaman otros ;-)). Y dado que principalmente me dedico a la construcción de software centrado en datos, estoy especialmente sensibilizado con el tema ;-). Conozco sistemas ORM , y en especial NHibernate , que ayudan a aliviar en gran parte esta falta de concordancia, por lo que estaba deseando ver la gran apuesta de Microsoft en este ámbito, máxime después de juguetear...

Atajo para instanciar tipos anónimos en C# y VB.NET

Tanto la guía de programación del lenguaje C# 3.0 como la de Visual Basic .NET 9 hablan de que ambos compiladores pueden agilizar la instanciación de tipos anónimos, permitiendo escribir instrucciones realmente concisas, gracias a su capacidad para deducir los nombres de las propiedades a partir de su contexto. Sin embargo son ese tipo de detalles que, al menos un servidor, había pasado por alto a pesar de haberlo visto utilizado más de una vez. Como sabemos, la creación "normal" de un...
Publicado por José M. Aguilar | 5 comment(s)
Archivado en: ,,,,
Más artículos Página siguiente >