Necesito obtener todas las propiedades usando la reflexión en el orden en que se declaran en la clase. Según MSDN el orden no puede ser garantizada cuando se utiliza GetProperties()
Obtener propiedades en orden de declaración utilizando la reflexión
El método GetProperties no devuelve propiedades en un orden en particular, tales como orden alfabético o declaración.
Pero he leído que hay una solución al ordenar las propiedades por el MetadataToken
. Entonces mi pregunta es, ¿es seguro? No puedo encontrar información sobre MSDN al respecto. ¿O hay alguna otra forma de resolver este problema?
Mi implementación actual se ve de la siguiente manera:
var props = typeof(T)
.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
.OrderBy(x => x.MetadataToken);
De todos modos, es una mala idea. Cree su propio atributo con valor de orden o cualquier otro metadato y marque los campos de clase con ese atributo. –
Quizás podría agregar un nuevo atributo que contiene una int del orden. Luego, obtenga las propiedades, obtenga DisplayOrderAttribute de cada propiedad y ordene por eso. – BlueChippy
Por curiosidad, ¿por qué estás haciendo esto, qué estás tratando de lograr? –