Sie können dies nicht tun.
Attributwerte müssen konstante Ausdrücke sein. Die Werte werden in den kompilierten Code eingebettet. Wenn Sie keinen konstanten Ausdruck verwenden möchten, können Sie kein Attribut verwenden ... und Sie sollten es möglicherweise nicht tun. Es kann bedeuten, dass Sie Attribute verwenden, wenn Sie einen anderen Ansatz verwenden sollten.
Vielleicht möchten Sie Eric Lipperts Blogpost unter properties vs attributes lesen.
Natürlich müssen Sie dort kein Zeichenfolgenliteral verwenden. Sie könnten haben:
[ExtractKey(ExtractionKeys.Extraction)]
...
public static class ExtractionKeys
{
public const string Extraction = "Extraction";
}
... aber es ist immer noch eine Kompilierzeitkonstante.
Können Sie das Attribut auf die Eigenschaft selbst setzen? –
Wie nennt man was? Es sieht so aus, als ob Sie eine Eigenschaft haben, die definiert, was als Schlüssel extrahiert werden soll, oder? Wenn Sie also ein Attribut 'KeyName' haben und es in die Eigenschaft einfügen, dann kann das, was die Extraktion ausführt, nach Ihrem' KeyName' -Attribut für die Eigenschaften der Klasse suchen und dann den Namen des Schlüssels aus der Eigenschaft erhalten, die dieses Attribut hat. Ist das sinnvoll? –
@ChrisNielsen Ja, das macht Sinn, Kumpel ... Ich habe in const String und Zuweisung zu Attribut gegeben. – user1990395