2009-04-21 17 views
8

He leído algunos artículos sobre cómo crear tipos anónimos en C#.¿Cuáles son algunos ejemplos de cómo los tipos anónimos son útiles?

¿Cuáles son algunos casos de uso para estas cosas? Para mí, parece que podría hacer las cosas un poco más difíciles de entender al declarar los objetos y sus miembros en línea.

¿Cuándo tiene sentido utilizar tipos anónimos?

+0

¿podría agregar el enlace de ese artículo? –

Respuesta

6

Me gusta usar tipos anónimos cuando necesito enlazar a una colección que no se ajusta exactamente a lo que necesito. Por ejemplo, aquí está una muestra de mi aplicación:

var payments = from terms in contract.PaymentSchedule 
        select new 
        { 
         Description = terms.Description, 
         Term = terms.Term, 
         Total = terms.CalculatePaymentAmount(_total), 
         Type=terms.GetType().Name 
        }; 

He aquí, pues, ato una cuadrícula de datos a payments.ToList(). la cosa aquí es que puedo agregar múltiples objetos sin tener que definir una intermidaria.

3

A menudo los uso cuando se combinan datos con controles complejos, como cuadrículas. Me da una forma fácil de formatear los datos que envío al control para que la visualización de esos datos sea más fácil de manejar para el control.

GridView1.DataSource = myData.Select (x => new {Name = x.Description, Date = x.Date.ToShortDate()});

Pero, más adelante, después de que el código sea estable, convertiré las clases anónimas en clases con nombre.

¡También tengo casos (Reporting Services) donde necesito cargarlos usando datos no relacionales, y Reporting Services requiere que los datos sean PLANOS! Uso LINQ/Lambda para aplanar los datos fácilmente para mí.

0

Ellos son útiles cuando se utilizan LINQ

var query = from c in listOfCustomers 
      select new {FirstName = c.Name,c.City}; 

echar un vistazo a este Introduction to LINQ

0

Here es una buena entrada en el blog por Charlie Calvert sobre los usos de los tipos anónimos.

1

Los considero como un reemplazo muy útil para objetos simples de estructura/estructura, especialmente cuando se trabaja con VB.NET, ya que no es compatible con las propiedades implementadas automáticamente.

2

LINQ del/Lambda

var quantity = ... 
var query = db.Model.Select(m => new 
            { 
            Name = m.Name, 
            Price = m.Price, 
            Cost = M.Price * quantity 
            }); 
foreach (var q in query) 
{ 
    Console.WriteLine(q.Name); 
    Console.WriteLine(q.Price); 
    Console.WriteLine(q.Cost); 
} 

ASP.NET MVC -HtmlHelpers o al volver JSON

<%= Html.TextBox("Name", Model.Name, new { @class = "required" }) %> 

public ActionResult SearchModels(var q, int limit) 
{ 
    var query = db.Models.Where(m => m.Name.StartsWith(q)) 
          .Take(limit) 
          .Select(m => new { m.DisplayName, m.Name, m.ID }); 

    return Json(query.ToList()); 
} 

En realidad, prácticamente en cualquier lugar que sólo tiene un tipo de contenedor temporal para una acción de corta duración.

0

Personalmente, no encuentro mucho uso para los tipos anónimos. Ciertamente deben ser utilizados con un grado de precaución como mínimo. La situación en la que normalmente se utilizan es cuando se crean consultas LINQ que vuelven a generar múltiples valores, y solo se necesita utilizar los datos consultados durante la duración de la función. (Si los datos necesitan ser usados ​​afuera, entonces los tipos anónimos no pueden ser usados, usted debe declarar el suyo, y por una buena razón, es decir, legibilidad). De manera más general, a veces pueden ser útiles cuando se usan expresiones simples lambda. nuevamente yo mismo los he requerido con poca frecuencia. (Cuando digo que se requiere, hay casi alternativas según el contexto, pero a veces tipos anónimos son de hecho la opción más elegante.) Si desea un ejemplo de código, hágamelo saber e intentaré encontrar uno con alguna aplicación razonablemente decente.

2

de del caballo (de Microsoft) mouth:

Los tipos anónimos proporcionar un manera conveniente para encapsular un conjunto de sólo lectura propiedades en un solo objeto sin tener que primero explícitamente definir un tipo.

Anónimos Los tipos son útiles en las áreas que generalmente usaría una estructura definida pero no desea porque solo se usará dentro de un alcance limitado. Tiendo a usarlos como fuentes de datos o como contenedores para valores agregados (suma, recuento, etc.).

Cuestiones relacionadas