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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top