Ver por etiquetas

Todas las etiquetas » trucos » c# (RSS)

¿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...

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: ,,,

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...

Directivas personalizadas en páginas y controles ASP.NET

Qué divertido es esto. Hoy he descubierto una nueva característica que se presentó con ASP.NET 2.0, hace ya algunos añitos: la posibilidad de crear nuestros propios atributos en las directivas de página y controles, es decir, utilizar las líneas @Page y @Control que suelen encabezar nuestros archivos .Master, .aspx y .ascx para asignar valores a propiedades de nuestras clases, como en el siguiente ejemplo: <% @ Page Language =" C# " MasterPageFile...
Publicado por José M. Aguilar | 3 comment(s)
Archivado en: ,,,

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)

Cómo convertir clases en diccionarios clave/valor

El otro día, a raíz del post Atajo para instanciar tipos anónimos en C# y VB.NET , el amigo Leo H., desde Argentina, me envió una cuestión: [...] Me parece muy interesante crear diccionarios utilizando tipos anónimos, pues simplifica de una forma considerable la cantidad de código que hay que escribir para conseguir llenar una estructura de este tipo. De hecho, estoy pensando en utilizar esta técnica en una librería que estoy desarrollando, pero no veo claro cómo transformar después ese objeto anónimo...

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: ,,,,

Cómo describir los elementos de una enumeración usando métodos de extensión y atributos (C# y VB.NET)

Me he encontrado en el blog de Fresh Logic Studios con un post donde describen una técnica interesante para obtener descripciones textuales de los elementos de una enumeración. De hecho, ya la había visto hace tiempo en I know the answer como una aplicación de los métodos de extensión para mejorar una solución que aportaba en un post anterior . Como sabemos, si desde una aplicación queremos obtener una descripción comprensible de un elemento de una enumeración, normalmente no podemos realizar una...

Efectos laterales en métodos parciales

Hace unos días comentaba que el uso de métodos parciales puede causar algunos problemas en la ejecución de nuestras aplicaciones que podríamos calificar, cuanto menos, de "incómodos". Recordemos que una parte de una clase parcial puede declarar un método y utilizarlo (invocarlo) dentro de su código; si el método está implementado en otro fragmento de la clase, se ejecutará como siempre, pero si no ha sido implementado, el compilador eliminará tanto la declaración del método como las llamadas...

Clases parciales en C# y VB.NET

Aunque las clases parciales aparecieron hace unos años, con la llegada de .Net 2.0 y Visual Studio 2005, vamos a hacer un breve repaso como preparación para un próximo post que trate los métodos parciales. Las clases parciales (llamados también tipos parciales) son una característica presente en algunos lenguajes de programación, como C# y VB.Net, que permiten que la declaración de una clase se realice en varios archivos de código fuente, rompiendo así la tradicional regla "una clase, un archivo"...

Comentar porciones de código en un archivo .ASPX

Cuando estamos desarrollando es habitual que tengamos que comentar porciones de código para realizar pruebas. Esto resulta de lo más sencillo cuando programamos en un lenguaje de los habituales como Javascript, C#, Visual Basic o incluso (X)HTML, pues todos ellos disponen de marcadores que hacen que el compilador o intérprete ignore determinadas líneas de código... pero, ¿cómo logramos este efecto si se trata de un archivo .ASPX, donde pueden encontrarse varios de ellos a la vez? Por ejemplo, dado...
Publicado por José M. Aguilar | con no comments

Otro uso para la arroba (@) en C#

Hasta hoy no sabía que la arroba, además de permitir la definición de constantes string literales y multilíneas ( mi gran descubrimiento del mes pasado ), también puede ser utilizado en C# para utilizar nombres reservados del lenguaje como identificadores. Según la especificación del lenguaje C# , un identificador (de una variable, clase, propiedad...) puede ser una de las palabras clave del lenguaje (for, if, int, string...) si va precedida por una arroba, permitiendo aberraciones como la siguiente...

Saber si una cadena está vacía en C#

Comprobar si una variable de tipo string está vacía es una tarea que seguro realizamos muy a menudo en nuestras aplicaciones. Observando código, tanto propio como ajeno, he visto que existen varias formas de hacerlo, y a veces cometemos errores que pueden ser fácilmente evitables prestando un poco de atención. Por ejemplo, dada una variable str declarada como string , utilizando en C# la expresión str.Equals("") podemos conocer si str contiene una cadena vacía. Sin embargo, si str contiene...

Concatenando un string multilínea en C#

Hace unos días publiqué un post donde comentaba lo que sin duda era mi descubrimiento del mes : la posibilidad de codificar constantes de cadena multilíneas en C# al más puro estilo Heredoc de PHP y otros lenguajes. Al día siguiente en la oficina pude observar que, como sospechaba, no era una característica muy conocida (aunque todo el mundo sabía que la arroba @ se utilizaba para introducir fácilmente caracteres extraños en los strings) y que su utilidad era enorme a la hora de asignar sentencias...