Usando uma propriedade como um argumento atributo
-
07-07-2019 - |
Pergunta
Eu escrevi um costume cartão de crédito atributo de validação que os controlos CardNumber propriedade é válida para um tipo de cartão especial (outro imóvel na mesma classe)
[CardValidationBinCheck(this.CardType,
ErrorMessage = "CreditCardNumberDoesNotMatchCardType")]
public string CardNumber
{
...
}
Isso não irá compilar como studio reclama que os argumentos de atributo deve ser constante, uma expressão typeof ou uma expressão criação matriz de um tipo de parâmetro atributo (?).
Existe uma maneira eu posso passar cirvumvent isso e passar a minha this.CardType
ao atributo?
Bondade,
Dan
Solução
Infelizmente não. Mesmo se IL permite que um valor de atributo a ser uma referência membro simbólica (por exemplo, um PropertyInfo
efetivamente) não há nenhum operador C # para obter um para você 1 . Você poderia passá-lo como um literal string e então usar a reflexão para obter o PropertyInfo
embora. Feio e frágil, mas provavelmente o mais próximo que você vai conseguir.
1 Este é um pedido de recurso bem conhecido, possivelmente, chamado de operador "infoof". Não há sinal de que seja implementado embora.