¿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
IsLiteral
diceif its value is written at compile time
y 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
string
valores 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()