martes, 27 de febrero de 2007

La sentencia Using

La mayoría de los programas escritos en C# contienen al menos, aunque no es requisito, una sentencia using.

Sabemos que con esta sentencia utilizamos un namespace determinado y con esto acortamos notoriamente los nombres de las clases y tipos que utilizaremos en nuestro código.

La manera de utilizar la sentencia using para importar un namespace es la siguiente.

using MiNamespace1;
using MiNamespace2;

Con esto se importan todas las classes de los namespaces referenciados.

¿Que pasa si tanto MiNamespace1 como MiNamespace2 contienen una clase llamada MiClase?
Esto crearía un conflicto de nombres, ya que el compilador no sabría a qué clase nos referimos cuando utilizamos MiClase (si a MiNamespace1.MiClase o MiNamespace2.MiClase).
Para solucionar este conflicto es posible crear un alias para cada espacio de nombres importado. Podemos definir un alias para el using de la siguiente manera.

using Alias = MiNamespace1;


De esta manera ahora para referirnos a MiNamespace1.MiClase lo hacemos como Alias.MiClase (el ejemplo no es el mejor
para notar lo útil que puede ser esta sentencia, pero imaginate que tengas que utilizar namespaces como los siguientes).

using Alias1 = Empresa.Departamento.Proyecto.Modulo1;
using Alias2 = Empresa.Departamento.Proyecto.Modulo2;

Aquí sí que acorta notoriamente la codificación de los nombres de las clases.

*************************************

Pero si creias que la sentencia using se utiliza únicamente para importar namespaces estas muy equivocado.
Tambien tiene la función de definir bloques que utilizan un recurso determinado. Un recurso es una clase que implementa
la interfaz IDisposable, es decir, contiene un método para definir cuando el recurso ya no está siendo utilizado.

El Bloque using tiene como finalidad utilizar un recurso definido durante el alcance del bloque y
luego liberar el recurso llamando al método Dispose().

El siguiente es un ejemplo práctico de un bloque using.

using (Recurso r = new Recurso())
{
// utilización de recurso r.
}

Lo cual es equivalente a lo siguiente:

Recurso r = new Recurso(); // u otra asignacion.
try {
// utilización de recurso r.
}
finally
{

// Liberación del recurso -> r.Dispose();
r.Dispose();
}


Claro, existe una diferencia entre utilizar un bloque using y un bloque try/finally. En el primero el recurso
utilizado es sólo de lectura, mientras que es modificable en un bloque try/finally.

Es posible, también, definir varias instancias de un mismo recurso al inicializar un bloque using, de la siguiente manera:

using(Recurso r1=X, r2=Y, r3=Z){
...
}

Sentencia que es equivalente a:

using(Recurso r1=x ){
using(Recurso r2=Y){
using(Recurso r3=Z){
...
}
}
}

y a:

try
{
Recurso r1=X, r2=Y, r3=Z;
...
}
finally

{
r1.Dispose();
r2.Dispose();
r3.Dispose();
}

Aplicaciones para esta sentencia son, por ejemplo, conexiones a bases de datos, creacion de una lista de objetos, entre otras.

lunes, 26 de febrero de 2007

Code Snippets

La utilizacion de Code Snippets es una practica que disminuye notoriamente los tiempos de codificación de proyectos, sobre todo con muchas acciones repetitivas a lo largo del código.

El siguiente artículo presenta una manera sencilla de crear tus propios Code Snippets y añadirlos a Visual Studio 2005.

El artículo lo puedes encontrar aqui

sábado, 24 de febrero de 2007

Reflexión con C#

Reflexión es la capacidad de algunos lenguajes de acceder a su estructura mediante su metadata. Los lenguajes de .NEt Framework 2.0 proveen esta funcionalidad mediante el assembly System.Reflection.

Utilizando reflexión podemos consultar por los tipos contenidos en un assembly, sus miembros, propiedades y métodos, asi como sus permisos de acceso, entre otras características.

Este pequeño artículo muestra ejemplos de cómo utilizar reflexión con C#.

El artículo se encuentra aqui

martes, 13 de febrero de 2007

Tipos de datos Nullables.

Una de las novedades del .Net Framework 2.0 son los tipos de datos Nullables.

Este nuevo tipo de datos permite asignar valores nulos a tipos de datos por valor (ValueType), cosa que no era posible antes de la creación de este tipo de datos.

El siguiente artículo es una ayuda a la utilización de los tipos Nullables.

Lo pueden encontrar aqui

Concurso Microsoft Expression

Este Post es para invitarlos a probar el nuevo Microsoft Expression, una
herramienta orientada a sacar el mayor provecho a WPF (Windows
Presentation Foundation) que es la nueva apuesta de Microsoft en el
área gráfica.
La invitación es también para participar en un concurso a nivel
latinoamericano para desarrolladores y diseñadores que quieran
sacarle provecho a esta herramienta que nos presenta Microsoft.

Los premios van desde reproductores Zune para los 10 finalistas hasta
un viaje a Las Vegas (para participar en un evento de Microsoft para
diseñadores) + U$1,000

¿Quiénes pueden participar?
Diseñadores y desarrolladores web con residencia en Latinoamerica.

¿Cuáles son los requisitos?
Leer y aceptar los términos y condiciones del concurso que se
encuentran en el sitio web: www.expressionawardslatam2007.com
¿Cómo participo?
Visite el Sitio Web www.expressionawardslatam2007.com y complete la
forma de registro.

¿Quiénes integran el jurado?
El Jurado estará integrado por 10 reconocidos diseñadores Web
latinoamericanos, visite el sitio www.expressionawardslatam2007.com
para conocerlos.

¿Cuándo puedo inscribir mis trabajos?
Ya mismo puedes inscribir tus trabajos y serán recibidos hasta Marzo
del 2007.

Mas informaciones en el sitio oficial del concurso.
www.expressionawardslatam2007.com

Saludos

miércoles, 7 de febrero de 2007

Aquellos prodigios de la programacion.....

Muchas veces me he encontrado con gente que dice frases como:

"Programar es simple, yo aprendi en 1 mes pascal, C, Java, C++, PHP, C#, Visual Basic, etc". En fin, cualquier lenguaje de programacion sirve para aparentar frente a tus amigos que sabes programar y aprendiste en un periodo muy corto de tiempo.

Un dia viajando por el ciberespacio me encontre con un articulo del señor Peter Norvig (Director of Research at Google Inc) que habla justamente sobre este fenomeno, el aprender programacion en un par de dias, incluso horas!!!!

Espero les guste y a mas de algun especimen que se jacta de sus aptitudes programaticas los haga recapacitar un poco sobre la complejidad de la programación y de manejar un lenguaje específico.

El artículo lo pueden encontrar aqui

para los poco gringos en español aqui

viernes, 2 de febrero de 2007

Evitando Cross-Site Scripting

Hace algun tiempo, Microsoft liberón una librería llamada Microsoft Anti Cross-Site Scripting, cuyo objetivo es brindar una manera simple de disminuir el riesgo de un ataque de estas caracteristicas a un sitio web.

La utilización de esta librería es simple e intuitiva. El siguiente articulo es una guía básica de uso de AntiXss para proyectos ASP.NET.

Agradecimientos a Yair Peña, un compañero de trabajo que nos enseñó esta librería y como sacarle provecho en nuestras aplicaciones.


El artículo lo puedes encontrar aqui

jueves, 1 de febrero de 2007

Articulo de Introducción a SandCastle

Oscar Angulo, un compañero de trabajo nos presentó una herramienta de manejo de documentación en proyectos en Visual Studio.

La herramienta se llama SandCastle y realmente significa un aporte a la documentación de clases y elementos de un proyecto. Esta herramienta genera documentación al estilo MSDN y es muy simple de utilizar.

El siguiente artículo es una pequeña introducción a las características de SandCastle y contiene un ejemplo básico de generación de documentación para una clase.

El artículo lo podeis encontrar aqui

Articulo de Introducción a SandCastle

Oscar Angulo, un compañero de trabajo nos presentó una herramienta de manejo de documentación en proyectos en Visual Studio.

La herramienta se llama SandCastle y realmente significa un aporte a la documentación de clases y elementos de un proyecto. Esta herramienta genera documentación al estilo MSDN y es muy simple de utilizar.

El siguiente artículo es una pequeña introducción a las características de SandCastle y contiene un ejemplo básico de generación de documentación para una clase.