Ver por etiquetas

Todas las etiquetas » C# 2.0 (RSS)

Cargar un tipo dinamicamente

Una aplicación modular suele ser una aplicación donde sus funcionalidades son opcionales, de forma que podemos quitar ó añadirlas según nos convenga. La aplicación solo sabe que va a tratar con instancias que cumplen un determinado contrato, ya sea cumpliendo con una interfaz ó determinado tipo base (usando clases abstractas). Estos contratos suelen estar en ensamblados que conocen las dos partes, de forma que la aplicación espera una instancia de clase que cumple el contrato definido en el ensamblado...

Conversion de arrays sin cast directo con C#

Realizar casting entre clases es siempre sencillo, el inconveniente es cuando se trata de un arrays. Por ejemplo... sabiendo que la clase Manager deriva de Employee , si tenemos un array de Manager , es fácil convertirlo en un array de Employee usando casting directo: Employee[] employees1 = (Employee[])managers; Pero si tenemos un array de Employee no es posible convertirlo en un array de Manager de la misma forma que tampoco podríamos hacer un casting directo entre objetos simples. No se me ocurre...
Publicado por Valeriano Tórtola | 2 comment(s)
Archivado en: ,,

Desechable o no desechable

La interfaz IDisposable nos provee del método .Dispose() que utilizamos para liberar los recursos que esta usando ese objeto, pero dicho método... no deja de ser un simple método ;) Solo hace falta hacer una pequeña prueba para darse cuenta: 1: class Program 2: { 3: static void Main( string [] args) 4: { 5: Desechable test = new Desechable(); 6: 7: test.Dispose(); 8: 9: Console.WriteLine(test.Cadena?? "Muerto" ); // Muestra: Vivo! 10: Console.ReadKey( true ); 11: } 12: } 13: 14: class Desechable...
Publicado por Valeriano Tórtola | 2 comment(s)
Archivado en: ,,

Asistente P/Invoke Interop

Si trabajas con p/invoke tanto habitual como eventualmente y pinvoke.net esta en tus bookmarks... esta herramienta no te va a dejar indiferente :D Leo en el blog del BCL Team : El equipo Interop ha publicado recientemente una nueva herramienta llamada P/Invoke Interop Assistant . Esta herramienta genera automáticamente las declaraciones en C# ó VB.NET de las llamadas p/invoke nativas. Incluye una búsqueda rápida por las librerias comunes Win32 y permite generar las declaraciones para cualquier otra...
Publicado por Valeriano Tórtola | 3 comment(s)
Archivado en: ,,

Pooling de llamadas asincronas

Hora de volver a trabajar... asi que toca quitarle el polvo al Visual Studio que tenia abandonado ya estos meses, la buena vida se acaba... xD En determinadas ocasiones, necesitamos lanzar un cierto número de ejecuciones en paralelo y esperar a que terminen todas para devolver el resultado final. Existen diversas formas de hacerlo, y yo voy a poner la que, después de darle un par de vueltas... me parece la mejor y más sencilla, ... se puede hacer aún mejor, pero no se si más sencilla... y no se si...

Trabajando con el registro de Windows desde C# y .NET

Manejar el registro de Windows es algo... en parte tedioso por lo extenso y medianamente documentado que esta lo que contiene. En mi humilde opinión, es algo a evitar siempre que sea posible en virtud de los archivos de configuración; pero en ocasiones necesitamos crear/modificar entradas que afectan al funcionamiento de otros programas ó del propio Windows desde nuestras aplicaciones, asi que hay que arremangarse y meterle mano :D Primero un pequeño repaso de como se estructura la información a...
Publicado por Valeriano Tórtola | 3 comment(s)
Archivado en: ,,

Cifrando Strings con un password

Puede ser... que el cifrado del archivo de configuración de tu aplicación no se adecue a la solución que buscas... puede ser... que necesites cifrar cadenas concretas en un archivo... en una base de datos... mandar eMails cifrados a tu novia/mujer/amante... lo que sea... Estas dos funciones, basadas en el ejemplo de este artículo con algunas modificaciones, cifran y descifran un String con el algoritmo simétrico Rijndael y con una palabra clave que se pasa como SecureString ( ¿Por qué? ). De esta...
Publicado por Valeriano Tórtola | con no comments
Archivado en: ,,

Servicios Windows instalables

Aquí va un pequeño How-to rápido de como se crea e instala un servicio Windows con .NET y Visual Studio 2005 dedicado a mi compañero Juanma Otero que a cambio me explicará como funcionan los EndPoints de SQL Server :D Cada vez que vayamos a crear un servicio Windows, podemos seguir estos pasos para crear lo que sería el contenedor y su capacidad de instalación, para luego más tranquilamente empezar a introducir la lógica y funcionalidad del negocio que le queramos dar. 1. Creando. Se utiliza un proyecto...
Publicado por Valeriano Tórtola | 2 comment(s)
Archivado en: ,,

Tratando con excepciones

Buff... cuanto tiempo desde mi último post, entre estudiar y la medio-gripe que arrastro desde hace unas semanas no tengo ganas tiempo de nada :P Un tema que siempre me ha parecido que se deja un poco olvidado a la hora de desarrollar una aplicación es el tema de las excepciones, su flujo, su registro y como afectan al diseño y modularidad de la aplicación. Una excepción, es un error en el flujo lógico ideal de nuestra aplicación causado por una condición inusual. Ante un error de este tipo, debemos...