Как я могу получить все константы любого типа, используя отражение?
c#
.net
reflection
constants
Масуд Рамезани
источник
источник
Ответы:
Хотя это старый код:
Источник
Вы можете легко преобразовать его в более чистый код, используя дженерики и LINQ:
Или с одной строкой:
источник
IsLiteral
говорит,if its value is written at compile time
и это верно только для констант, как это происходит сейчас (проверено на .NET 4.5.2)Если вы хотите получить значения всех констант определенного типа из целевого типа, вот метод расширения (расширяющий некоторые ответы на этой странице):
Тогда для такого класса
Вы можете получить
string
постоянные значения следующим образом:источник
.Where(fi => fi.IsLiteral && !fi.IsInitOnly).Select(x => x.GetRawConstantValue()).OfType<T>().ToList();
?Как расширения типа:
источник
IEnumerable<T>
вместоIList
?Используйте,
property.GetConstantValue()
чтобы получить значение.источник
GetRawConstantValue()