Pasando un tipo anónimo a un control enlazado

7

En términos generales, me opongo bastante al uso de tipos anónimos en código del mundo real (excepto en LINQ y algunos otros escenarios específicos), pero en este momento estoy viendo una situación en la que necesito enlazar un ASP GridView controla con una colección de valores de tuplas y se ven bastante tentadores.

Básicamente, necesito mostrar una lista de cuentas propietarias asociadas con diferentes nombres de computadora. Actualmente no tengo un tipo que contenga esas dos propiedades porque no las uso juntas como esta en ningún otro lugar.

Lo que normalmente haría en una situación como esta es simplemente crear una nueva clase que tenga las propiedades, establecer el ItemType en el GridView para hacer referencia a ese tipo, luego compilar objetos de ese tipo en mi Select método (uso ObjectDataSource la mayor parte del tiempo). Pero ahora estoy pensando que realmente no hay ningún beneficio en lanzar esa clase extra, ya que no importa lo que se enlace a través de la reflexión.

¿Hay alguna razón para evitar el uso de tipos anónimos en situaciones de enlace de datos como esta?

Aceptaría cualquier cosa: rendimiento, legibilidad, facilidad de mantenimiento, principio o cualquier otra cosa que me puedas ofrecer. Pero la única desventaja que puedo pensar es si quisiera usar la propiedad Item para usar Intellisense para mi enlace de datos, pero en este caso particular no tengo uso para nada más que BoundField s. Por supuesto, todo esto se basa en la suposición de que incluso funciona, es cierto que todavía no lo he probado con tipos anónimos, por lo que es posible que no sea compatible por una razón u otra.

    
pregunta Matthew Haugen 31.07.2014 - 23:57

2 respuestas

1

No

Y tu suposición de que no se está escribiendo de forma estática también es incorrecta.

De la documentación :

  

Los tipos anónimos son tipos de clase que se derivan directamente de un objeto y que no se pueden convertir a ningún tipo, excepto un objeto. El compilador proporciona un nombre para cada tipo anónimo, aunque su aplicación no puede acceder a él. Desde la perspectiva del tiempo de ejecución de lenguaje común, un tipo anónimo no es diferente de cualquier otro tipo de referencia.

    
respondido por el Caleth 07.10.2015 - 01:40
0

A menudo, ato un GridView a una System.Data.DataTable que se llenó a partir de un procedimiento almacenado. Hago que los campos del procedimiento almacenado coincidan con los nombres de los campos en GridView. Otra forma, al usar linq y entitiy framework con tipos anónimos, es vincular el resultado de linq directamente a la propiedad DataSource de GridView de la misma manera que si fuera un DataTable. Esta question muestra un ejemplo utilizando linq y he aquí un ejemplo usando un DataTable. Personalmente, creo que usar tipos anónimos es mejor que usar un DataTable porque los datos en el DataTable se almacenan como un Objeto y el tipo anónimo es un tipo de datos sólido. La decisión de usar los tipos DataTables vs Linq y Anonymous a menudo depende de cómo se siente su supervisor con respecto a Linq y al Entity Framework.

    
respondido por el Russell Harkins 06.10.2015 - 16:27

Lea otras preguntas en las etiquetas