vtortola.Net

Mayo 17, 2007

Recorrer las propiedades de un objeto

Archivado en: .NET, C#, Reflection — vtortola @ 9:04 am

Resulta que a través de un web service me llega un objeto con una gran cantidad de propiedades que he de mostrar, así que como no quería tener que escribirlas una a una me puse a buscar como recorrer todas las propiedades del objeto con System.Reflection.

El ejemplo muestra la sencillez y potencia que tiene System.Reflection para obtener datos y metadatos de una clase:

(más…)

Mayo 10, 2007

Recursividad copiando directorios

Archivado en: .NET, C#, Input Output — vtortola @ 4:22 pm
Recursividad , típica cosa que cuando la estudias piensas “pfff!!… ¿quien necesitará hacer una locura como esa?”. El caso es que hoy como forma de matar el rato respondía a un mensaje en los foros de MSDN sobre como combinar dos directorios, a lo que el “preguntante” añadió después la necesidad de que también se viesen afectados los subdirectorios, … y así … sin comerlo ni beberlo me salió una función recursiva como algo de lo más cotidiano … y la verdad me ha hecho sentirme viejo xD.

No es la primera vez que hago uso de este tipo de algoritmia… simplemente en que nunca me había visto en el plano del tiempo tomando esto como referencia, viéndome hoy y viéndome aquel día en el que mirando con cara de asco a la pizarra pensaba… WTF!!! Supongo que rebasar la línea de los 5 lustros hace unos días me esta afectando psicológicamente … :(

Mayo 9, 2007

Leyendo datos binarios en C#

Archivado en: .NET, C#, Input Output — vtortola @ 8:44 am
Este artículo es una traducción de Reading binary data in C# de Jon Skeet, el cual me ha dado su consentimiento expreso para traducirlo y ponerlo aquí.
Thanks Jon ;)

En los newsgroup de C#, he visto bastantes veces código para leer datos de un archivo como este:

// Mal método! No lo uses!
FileStream fs = File.OpenRead(filename);
byte[] data = new byte[fs.Length];
fs.Read(data, 0, data.Length);

Este código esta lejos de garantizar su funcionamiento. En concreto, FileStream podría estar leyendo solo los primeros 10bytes del archivo en el buffer. El método Read solo está garantizado para bloquear hasta que alguna porción de datos esta disponible (o el final del stream, si se alcanzó), no hasta que la totalidad de los datos están disponibles. Aquí es donde el valor de retorno (el cual es ignorado en el código de arriba) es vital. Necesitas arreglártelas para el caso en que no puedas leer todos los datos en la misma pasada, y hacer un bucle hasta que hayas leído todo lo quieres. Aquí un método que puedes usar si quieres leer desde un stream a un array sin parar hasta que este haya finalizado:
(más…)

Mayo 8, 2007

Satisfaction

Archivado en: .NET, Personal, Windows — vtortola @ 6:42 pm

avanade.gif

Bueno pues ya es oficial, el día 21 de este mes entraré a formar parte de la plantilla de Avanade, estoy bastante contento ya que cuando vine a Madrid  buscando una buena carrera profesional en el mundo Microsoft, Avanade era uno de mis objetivos prioritarios :)

Modelo Asíncrono. Parte III, espera y finalización.

Archivado en: .NET, C#, Modelo Asíncrono — vtortola @ 11:17 am

Siguiendo con el modelo asíncrono, hoy explicaré como esperar a un thread en concreto y como realizar una finalización síncrona de forma adecuada.
Para finalizar una operación asíncrona de forma síncrona (bloqueando el hilo actual hasta que el secundario termine) podemos hacerlo de dos formas, llamando al método .EndInvoke del objeto delegado, con el inconveniente de que si tenemos definido un
AsyncCallback y hay otro .EndInvoke allí recibiremos una “InvalidOperationException en alguno de los dos sitios con el mensaje “EndInvoke can only be called once for each asynchronous operation. que viene a decir “EndInvoke solo puede ser llamado una vez por cada operación asíncrona con la molestia que ello conlleva; la forma elegante es utilizar el método “IAsyncResult. AsyncWaitHandle.WaitOne” que causará la finalización síncrona pero sin modificar el comportamiento que habíamos previsto en un principio, de esta forma podemos forzar la espera a la finalización de un determinado hilo ó grupo de hilos que por ejemplo realizasen tareas que habría que completar inevitablemente para poder continuar, con la ventaja de que se ejecutarían de forma paralela.

El ejemplo esta basado en el del ejemplo anterior, Modelo Asíncrono. Parte II, control.

(más…)

Mayo 7, 2007

Columnas autoincrementales en un DataTable

Archivado en: .NET, ADO.NET, C# — vtortola @ 8:02 am

Una de las cosas que me gusta de ADO.NET es la forma que tiene de trabajar con los datos y las facilidades de las que provee para trabajar.

Para cuando trabajamos con tablas que tienen una columna de identificación autoincremental, ADO.NET nos provee de la forma de automatizar este proceso, es tan sencillo como marcar la columna como ‘AutoIncrement’ , indicar desde que valor ha de comenzar (‘Seed’) y de cuanto en cuanto ha de incrementar.

El ejemplo es parcial, simplemente muestra la parte del código “interesante”.

(más…)

Blog de WordPress.com.