Problema con IEnumerable en Reflection [duplicado]

Posibles duplicados:
Cómo iterar la lista en reflexión
Problema con IEnumerable en Reflexión

Hola,

Me enfrento a un problema al iterar la lista en la reflexión.

var item = property.GetValue(obj,null); // We dont know the type of obj as it is in Reflection.

foreach(var value in (item as IEnumerable))
 {
   //Do stuff
  }

Si hago esto, obtendré el error como

El uso del tipo genérico 'System.Collections.Generic.IEnumerable' requiere 1 tipo de argumentos

Por favor, ayúdame.

preguntado el 10 de mayo de 11 a las 13:05

necesitas emitir para IEnumerable<T> no IEnumerable -

2 Respuestas

Hay una diferencia entre el tipo IEnumerable y el tipo genérico IEnumerable<T>. Actualmente cree que te refieres al genérico ya que has incluido el espacio de nombres System.Collections.Generic; El mensaje de error se queja porque no ha escrito el IEnumerable<T> tipo genérico correctamente.

Lo no genérico IEnumerable tipo se declara en el System.Collections espacio de nombres, así que agregue una referencia. (using System.Collections;).

Si quería usar el tipo genérico, debería tener algo como esto: foreach(var value in (item as IEnumerable<string>)) donde cadena es el tipo de objeto item enumera más.

Vea IEnumerable y IEnumerable tan bien como esto información sobre tipos genéricos.

contestado el 10 de mayo de 11 a las 17:05

publiqué mi propia respuesta pero la tuya es más completa. +1 - Adrian Zanescu

Como se indica en los comentarios, ya hizo esta pregunta. Sin embargo, esta instancia tiene un problema ligeramente diferente. Está recibiendo un error del compilador porque está incluyendo System.Collections.Generic namespace en su archivo fuente (arriba usando cláusulas). Ese espacio de nombres contiene la versión genérica de IEnumerable -> IEnumerable<T>. Tu elenco falla por eso. Si desea utilizar IEnumerable, agregue "using System.Collections".

Respondido 10 ago 12, 19:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.