プロパティを属性引数として使用する
-
07-07-2019 - |
質問
特定のカードタイプ(同じクラスの別のプロパティ)に対してCardNumberプロパティが有効であることを確認するカスタムクレジットカード検証属性を記述しました
[CardValidationBinCheck(this.CardType,
ErrorMessage = "CreditCardNumberDoesNotMatchCardType")]
public string CardNumber
{
...
}
スタジオは、属性引数は定数、typeof式、または属性パラメーター型(?)の配列作成式でなければならないという文句を言うので、これはコンパイルされません。
とにかくcirvumvent thisを渡し、 this.CardType
を属性に渡すことができますか?
親切、
ダン
解決
残念ながらありません。 ILが属性値をメンバー参照トークン(たとえば、 PropertyInfo
に効果的に)にすることを許可している場合でも、1つを取得するC#演算子はありません 1 。それを文字列リテラルとして渡し、リフレクションを使用して PropertyInfo
を取得できます。 glyくて壊れやすいですが、おそらく最も近いでしょう。
1 これはよく知られている機能リクエストであり、「infoof」と呼ばれることもあります。オペレーター。ただし、実装されている兆候はありません。
所属していません StackOverflow