¿Cómo puedo obtener todas las constantes de cualquier tipo usando la reflexión?
c#
.net
reflection
constants
masoud ramezani
fuente
fuente

Respuestas:
Aunque es un código antiguo:
Fuente
Puede convertirlo fácilmente a un código más limpio usando genéricos y LINQ:
O con una línea:
fuente
IsLiteraldiceif its value is written at compile timey eso es cierto solo para constantes, que es cómo se comporta ahora (probado a partir de .NET 4.5.2)Si desea obtener los valores de todas las constantes de un tipo específico, del tipo de destino, aquí hay un método de extensión (que extiende algunas de las respuestas en esta página):
Entonces para una clase como esta
Puede obtener los
stringvalores constantes de esta manera:fuente
.Where(fi => fi.IsLiteral && !fi.IsInitOnly).Select(x => x.GetRawConstantValue()).OfType<T>().ToList();?Como extensiones de tipo:
fuente
IEnumerable<T>lugar de anIList?Use
property.GetConstantValue()para obtener valor.fuente
GetRawConstantValue()