Como posso obter todas as constantes de qualquer tipo usando reflexão?
c#
.net
reflection
constants
masoud ramezani
fonte
fonte
Respostas:
Embora seja um código antigo:
Fonte
Você pode facilmente convertê-lo em código mais limpo usando genéricos e LINQ:
Ou com uma linha:
fonte
IsLiteral
dizif its value is written at compile time
e que é verdade apenas para constantes, que é como ele está se comportando agora (testado a partir de .NET 4.5.2)Se você deseja obter os valores de todas as constantes de um tipo específico, a partir do tipo de destino, aqui está um método de extensão (estendendo algumas das respostas nesta página):
Então, para uma aula como esta
Você pode obter os
string
valores constantes assim:fonte
.Where(fi => fi.IsLiteral && !fi.IsInitOnly).Select(x => x.GetRawConstantValue()).OfType<T>().ToList();
:?Como extensões de tipo:
fonte
IEnumerable<T>
vez de umIList
?Use
property.GetConstantValue()
para obter valor.fonte
GetRawConstantValue()