Domanda

Ho scritto un attributo di convalida della carta di credito personalizzato che verifica che la proprietà CardNumber sia valida per un determinato tipo di carta (un'altra proprietà della stessa classe)

[CardValidationBinCheck(this.CardType, 
                        ErrorMessage = "CreditCardNumberDoesNotMatchCardType")]
public string CardNumber
{
 ...
}

Ciò non verrà compilato poiché Studio lamenta che gli argomenti degli attributi devono essere costanti, un'espressione di tipo o un'espressione di creazione di array di un tipo di parametro di attributo (?).

Esiste un modo in cui posso passare questo cirvumvent e passare il mio this.CardType all'attributo?

La gentilezza,

Dan

È stato utile?

Soluzione

Purtroppo no. Anche se IL consente a un valore di attributo di essere un token di riferimento membro (ad es. Un PropertyInfo in modo efficace), nessun operatore C # ne ottiene uno per te 1 . Potresti passarlo come una stringa letterale e quindi usare la riflessione per ottenere PropertyInfo . Brutto e fragile, ma probabilmente il più vicino che otterrai.


1 Questa è una richiesta di funzionalità ben nota, probabilmente chiamata "infoof" operatore. Tuttavia, non vi è alcun segno che venga implementato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top