2010-05-13 28 views
21

我們有一些好歸於DB代碼,就像這樣:在C#中使用屬性中的變量

[Display(Name = "Phone Number")] 
public string Phone { get; set; } 

因爲它是很普通的,我們想再次使用它,但在名稱不同的字符串屬性的一部分。由於它是它似乎想要的東西爲const屬性,因此我們嘗試:

const string AddressType = "Student "; 
[Display(Name = AddressType + "Phone Number")] 
public string Phone { get; set; } 

這似乎好了工作,但有一個常量字符串意味着我們不能在任何基礎類覆蓋它,從而去除我們原本打算添加的功能,並暴露我的問題:

有沒有辦法在屬性中使用某種變量,以便我們可以繼承並保留屬性裝飾?

回答

19

編譯時編譯器必須知道屬性中的所有內容。變量本質上是可變的(!),所以不能用於屬性。

如果您可以使用代碼生成工具,您可以動態地爲每個派生類插入不同的(常量)值。

+0

這太糟糕了,但我認爲是這樣。謝謝。 – thepaulpage 2010-05-13 15:08:30

+0

確實太糟糕了。但是,應該有這樣的用例,有沒有很好的選擇? – liang 2013-10-08 09:35:03

3

你可以跳過箍環並使用一個額外的屬性來定義變量部分,但與它會產生的結果相比,這將是相當多的工作。沒有簡單的方法來完成你所追求的。

+0

我簡單地考慮了我自己的屬性,但我認爲額外的工作不能證明保存的工作是正確的。對我來說,這是一個簡單的問題,但不是必須編譯時。 – thepaulpage 2010-05-13 15:10:16

相關問題