使用属性作为属性参数

问题描述:

我写了检查CardNumber属性是有效的特定卡类型(在同一类的另一个属性)使用属性作为属性参数

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

这将不会编译自定义信用卡验证属性因为studio抱怨属性参数必须是常量,属性参数类型(?)的类型表达式或数组创建表达式。

是否有反正我可以通过cirvumvent这个并通过我的this.CardType属性?

善良,

+0

你将不得不使用AOP来完成它,但你为什么要这样做?您可以从信用卡号码中确定CardType。二,为什么不只是有一种方法,并把它放入你的财产集来检查。 – 2009-09-14 13:34:28

遗憾的是没有。即使IL允许属性值成为成员参考令牌(例如有效地使用PropertyInfo),也没有C#操作员可以为您获取一个。您可以将它作为字符串文字传入,然后使用反射来获取PropertyInfo。丑陋而脆弱,但可能最接近你。


这是一个公知的功能请求,可能称为 “infoof” 操作符。虽然没有实施的迹象。

+0

谢谢你的回答,乔恩。 – 2009-09-14 13:39:02