example .net reflection types

.net - example - ¿Cuál es la diferencia o relación entre Type y TypeInfo?



typeid c++ (1)

No puedo entender completamente cuándo usar uno u otro. Son tan similares que me está confundiendo de vez en cuando y ellos. Cuando se trata de la reflexión, no sé si utilizar el Tipo llano o TypeInfo.

El propio .NET Framework agrega más confusión con cosas como assembly.DefinedTypes . Recupera un IEnumerable<TypeInfo> donde supuse que sería de IEnumerable<Type> . Además, hay un método typeInfo.AsType() . ¿Cuál es el significado de eso? ¿Son intercambiables?

Además, tienen métodos que son realmente similares.

Parece que TypeInfo es como una versión más poderosa del Type clásico. ¿Me equivoco?

¡Gracias!


De los documentos de MSDN :

Un objeto TypeInfo representa la definición de tipo en sí, mientras que un objeto Type representa una referencia a la definición de tipo. Obtener un objeto TypeInfo fuerza el ensamblaje que contiene ese tipo para cargar. En comparación, puede manipular los objetos de tipo sin que sea necesario que el tiempo de ejecución cargue el ensamblaje al que hacen referencia.

Por lo tanto, el Type proporciona una representación más superficial de los datos del objeto, es decir, proporciona el nombre del tipo como una cadena.

Where como TypeInfo proporciona una representación más rica del tipo que incluye listas de miembros, interfaces implementadas y el tipo base.

Las diferencias se explican con mayor detalle here .