Im tratando de utilizar DynamicObject en C#, y necesitaba una matriz de dinámica:Matriz de dinámica | ExpandoObject | con una sintaxis de inicialización comprimido
var d = new dynamic[];
que funciona muy bien.
EDITAR: Vea ExpandoObject a continuación.
Pero también me gusta llenar esa matriz con algunos datos con este comprimido inicializar nueva sintaxis:
var d = new dynamic[] {
new {
Name = "Some",
Number = 1010
},
new {
Name = "Other",
Number = 2010
}
}
Pero en ese caso, todos los objetos Obtiene el tipo de "objeto" no dinámica y un bucle a través de los artículos me dará una excepción:
foreach (dynamic item in d)
{
@item.Name
@item.Number
}
Error: 'objeto' no contiene una definición para 'Nombre'. Supongo que simplemente inicializo los elementos de la matriz de la manera incorrecta. Cómo agregar objetos dinámicos en su lugar?
EDIT: Nuevo contenido:
realizo "dinámica" no tiene la capacidad de añadir dinámicamente propiedades.
Será mejor que use ExpandoObject, que expone todos los elementos en un diccionario interno como propiedades. Pero, por desgracia ExpandoObject no parece apoyar esta bonita comprimido crear la sintaxis, y el compilador se queja:
var d = new ExpandoObject[]{
new ExpandoObject(){
Name="Nnn",
Number=1080
}
}
Así que la respuesta podría ser: no es posible.
¿Seguro de que ¿No solo quieres una matriz de tipo anónimo? – Ani
¿Esto es en ASP.NET MVC3? –
Tenga en cuenta que un '' dinámico' es 'un' objeto', solo que el compilador de C# lo trata de manera diferente y cultiva todos los accesos en 'dynamic' en el DLR – thecoop