0

我编写了一个自定义信用卡验证属性,用于检查 CardNumber 属性对特定卡类型是否有效(同一类中的另一个属性)

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

这不会编译,因为工作室抱怨属性参数必须是常量、typeof 表达式或属性参数类型 (?) 的数组创建表达式。

无论如何我可以通过 cirvumvent 这个并将我的传递this.CardType给属性吗?

善良,

4

1 回答 1

5

不幸的是没有。即使 IL 允许属性值成为成员引用标记(例如PropertyInfo有效),也没有 C# 运算符可以为您获取一个1。您可以将其作为字符串文字传递,然后使用反射来获取PropertyInfo。丑陋而脆弱,但可能是你能得到的最接近的。


1这是一个众所周知的功能请求,可能称为“infoof”运算符。不过,没有迹象表明它正在实施。

于 2009-09-14T13:32:48.847 回答