2009-09-14 189 views
0

我寫了檢查CardNumber屬性是有效的特定卡類型(在同一類的另一個屬性)使用屬性作爲屬性參數

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

這將不會編譯自定義信用卡驗證屬性因爲studio抱怨屬性參數必須是常量,屬性參數類型(?)的類型表達式或數組創建表達式。

是否有反正我可以通過cirvumvent這個並通過我的this.CardType屬性?

善良,

+0

你將不得不使用AOP來完成它,但你爲什麼要這樣做?您可以從信用卡號碼中確定CardType。二,爲什麼不只是有一種方法,並把它放入你的財產集來檢查。 – 2009-09-14 13:34:28

回答

5

遺憾的是沒有。即使IL允許屬性值成爲成員參考令牌(例如有效地使用PropertyInfo),也沒有C#操作員可以爲您獲取一個。您可以將它作爲字符串文字傳入,然後使用反射來獲取PropertyInfo。醜陋而脆弱,但可能最接近你。


這是一個公知的功能請求,可能稱爲 「infoof」 操作符。雖然沒有實施的跡象。

+0

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