Mit Hilfe einer Eigenschaft als Attribut Argument
-
07-07-2019 - |
Frage
Ich habe eine benutzerdefinierte Kreditkartenvalidierung Attribut geschrieben, die Cardnumber Eigenschaft gilt für einen bestimmten Kartentyp (eine andere Eigenschaft in der gleichen Klasse) prüft
[CardValidationBinCheck(this.CardType,
ErrorMessage = "CreditCardNumberDoesNotMatchCardType")]
public string CardNumber
{
...
}
Dies wird nicht kompilieren als Studio, das Attribut Argument klagt konstant sein muss, ein typeof Ausdruck oder ein Array-Erstellung Ausdruck eines Attribut Parametertyp (?).
Gibt es trotzdem kann ich cirvumvent dies passieren und meine this.CardType
dem Attribut übergeben?
Güte,
Dan
Lösung
Leider nicht. Auch wenn IL ein Attributwert kann ein Mitglied Referenz Token sein (beispielsweise ein PropertyInfo
effektiv) gibt es keine C # Operator für Sie bekommen 1 . Man könnte es sich als Stringliteral passieren und dann Reflexion verwenden, obwohl die PropertyInfo
zu bekommen. Hässlich und zerbrechlich, aber wahrscheinlich in der Nähe Sie erhalten.
1 Dies ist eine bekannte Feature-Anfrage, möglicherweise der "infoof" Operator genannt. Es gibt kein Anzeichen dafür allerdings umgesetzt werden.