sábado, 16 de noviembre de 2013

Delegados - Delegates - parte 1



Los siguientes posts sobre Delegados que arrancamos con esta primera parte, pretenden ser algo más que una simple pasada sobre lo que nos ofrece esta clase del CLR y su uso en LinQ. Estos posts intentan profundizar dentro de su usabilidad en el Framework ya que considero que es una de las partes más difícil de comprender y de dominar, y su comprensión total, nos hace no tener ningún tipo de barrera en LinQ dentro de su parte más avanzada.


La definición más lógica que suele realizarse cuando hablamos de un delegado, es que es lo más parecido a un puntero a una función en C++. Esto no es del todo cierto, ya que un delegado es una clase y no un tipo




martes, 12 de noviembre de 2013

Propiedades Automáticas e Inicializadores de Objetos



Este post que cubre las propiedades automáticas y los inicializadores de objetos, es un post completamente de transición, en el que nos viene a mostrar una forma de realizar acciones que cotidianas, que a partir de la versión 3.0 del Framework, como casi todo lo que se añadió para LinQ, se pueden realizar de una forma más sencilla y escribiendo mucho menos código.


Son ampliamente conocidas, pero me ha parecido interesante dedicarle en post dentro del mundo LinQ, por si había por ahí algún despistadillo que no las conocía.



domingo, 10 de noviembre de 2013

Tipos Anónimos



Los tipos anónimos son una característica introducida dentro del Framework 3.0.

Los tipos anónimos nos ofrecen la posibilidad de crear objetos al vuelo con propiedades de solo lectura, evitando tener que definir de manera explícita una clase para almacenar este tipo de datos equivalentes

Esta característica daba unas posibilidades de dinamismo a los desarrolladores de .Net solo reservada a lenguajes como JavaScript, Python, etc.

miércoles, 6 de noviembre de 2013

Asignación implícita de tipos, var



La palabra reservada var, viene a significar una asignación implícita de tipos. Esto se traduce en que el compilador será el que averigüe cual es el tipo que hay que asignar a esa variable, ósea utilizará la Inferencia de Tipos.

Cuando salieron las primeras noticas sobre esta mejora, trajo mucha controversia, al igual que los métodos extensores, dentro de la comunidad ya que muchos pensaban que esto rompía las buenas prácticas de programación y la fortaleza de tipos, cosa que no era cierta como veremos más adelante.


Es fácil confundir este tipo de variable con antiguo y costoso Variant de Visual Basic 6.0, o llegar a pensar que simplemente es un objeto de tipo object camuflado, pero nada de eso, es mucho más.


martes, 5 de noviembre de 2013

Inferncia de tipos


La inferencia de tipos, es una característica de los lenguajes funcionales  y consiste en la capacidad que tiene el compilador de predecir el tipo de una operación, método, asignación, etc., según los datos facilitados por el desarrollador dentro de la misma sentencia. Este proceso siempre se presenta en tiempo de compilación.
Esta novedad se dio por primera vez dentro del Framework 3.0, una entrega de framework muy poco utilizada y sin correspondiente versión de Visual Studio, por lo que muchos lo señalan como novedad del framework 3.5.

Normalmente la inferencia de tipos se suele achacar a los tipos anónimos (var), pero nosotros intentaremos darle un enfoque más general y trataremos para comenzar su uso con generics, para después verlo con tipos anónimos, y eventos y delegados, avanzadas en Expresiones Lambda, y árboles de expresiones que se escapan de nuestro tema principal.

sábado, 2 de noviembre de 2013

La palabra reservada default(T)



Dentro del universo de Generics, existe un concepto que no suele ser demasiado conocido y que aunque puede ser sustituido por otro tipo de técnicas, ahorra mucho código y lo hace mucho más seguro y entendible para terceros.


Hablamos de la palabra reservada default(T), de la que hablaremos en este post para intentar darte un enfoque no solo teórico sino también práctico, en pos de intentar que sea mucho más familiar para ti, de ahora en adelante en tus desarrollos de Generics.

miércoles, 30 de octubre de 2013

Restricciones en Generics



Hasta ahora, en la construcción de nuestros Generics, hemos dejado plena libertad para el consumidor, tanto si somos nosotros mismos, o si es algún usuario de alguna de nuestras librerías, de poder asignar el tipo que mejor le viniera dentro de nuestros parámetros de tipo. Esto en ocasiones, puede ser contraproducente para su uso, y lo que es peor puede limitarnos en demasía a la hora de realizar un desarrollo. Las restricciones dentro de Generics nos pueden ayudar a solventar todos estos problemas.

martes, 29 de octubre de 2013

Problemas de uso de colecciones no genéricas



En las versiones anteriores a framework 2.0, era absolutamente normal trabajar con colecciones de tipo object como base, entre ellas ejemplos como ArrayList, Queue, List, etc., Esto traía dos problemas principales a los desarrolladores:

  • Problemas de Conversion de Tipos.
  • Problemas de rendimiento.
Vamos a ver de manera un poco más amplia cada uno de ellos.

lunes, 28 de octubre de 2013

Generics (introducción)




Generics, es una de las mejoras más importantes introducidas en la versión 2.0 del .NET Framework y en Visual Studio 2005.

Los tipos genéricos agregan un concepto nuevo de parámetro, el parámetro de tipo, si indicado en C# mediante los símbolos de ‘<>’ y en la mayoría de los casos nombrados con la letra ‘T’, aunque esto no es relevante y podría nombrase con cualquier definición, de hecho para Entity Framework se suelen nombrar como ‘TEntity’, para claves primarias como ‘TKey’ y otros casos como ‘TValue’


Decir que dentro del CLR, la característica de genérico no solo está reservada para los métodos, ya que también pueden existir clases, estructuras, delegados, etc.

viernes, 25 de octubre de 2013

Introducción a LinQ


Language Integrated Query (Consultas integradas en el lenguaje) es un set de librerías de Microsoft .Net Framework para trabajar con data sources. LinQ proporciona una capa de abstracción entre los lenguajes de .NET y cada vez más fuentes de datos subyacentes.

LinQ proporciona a los desarrolladores una forma de consultar datos con un lenguaje muy similar al utilizado en sus desarrollos, principalmente C# o VB.NET. 

LINQ


Aquí inicio una serie de posts, que me llevarán a realizar un camino lo más profundo y lo más extenso posible sobre esta tecnología que tantos y tantos elogios se ha llevado por toda la comunidad y por todo el mundo del desarrollo en general.

En todo este recorrido, intentaré dar un repaso profundo a toda su estructura y características, empezando por la bases que sostienen sus pilares principales y continuando con una enumeración detallada de todas sus expresiones de consultas, operadores y partes más principales y significativas de sus librerías.


lunes, 21 de octubre de 2013

Validaciones con DataAnnotations


El espacio de nombres System.ComponentModel.DataAnnotations, nos proporciona una serie de clases, atributos y métodos para realizar validación dentro de nuestros programas en .NET.

 En ocasiones, debido a que tecnologías como WPF, Silverlight, ASP MVC, Entity Framework, etc., realizan comprobaciones de validación automáticas con clases marcadas con estos atributos, pensamos que es exclusivo de éstas, pero no tiene nada que ver, está al alcance de cualquier clase del Framework como veremos más adelante.