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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top