Wie kann ich mit Reflexion alle Konstanten eines beliebigen Typs erhalten?
c#
.net
reflection
constants
masoud ramezani
quelle
quelle
Antworten:
Obwohl es ein alter Code ist:
Quelle
Sie können es einfach mit Generika und LINQ in saubereren Code konvertieren:
Oder mit einer Zeile:
quelle
IsLiteral
sagtif its value is written at compile time
und das gilt nur für Konstanten, so wie es sich jetzt verhält (getestet ab .NET 4.5.2)Wenn Sie die Werte aller Konstanten eines bestimmten Typs vom Zieltyp abrufen möchten , finden Sie hier eine Erweiterungsmethode (Erweiterung einiger Antworten auf dieser Seite):
Dann für eine Klasse wie diese
Sie können die
string
konstanten Werte wie folgt erhalten:quelle
.Where(fi => fi.IsLiteral && !fi.IsInitOnly).Select(x => x.GetRawConstantValue()).OfType<T>().ToList();
?Als Typerweiterungen:
quelle
IEnumerable<T>
anstelle von a zurückgebenIList
?Verwenden Sie
property.GetConstantValue()
, um Wert zu erhalten.quelle
GetRawConstantValue()