2010-09-28 73 views
0

我知道屬性聲明的參數必須是常量表達式,並在編譯時解析。但是,我可以玩'編譯時間'的概念嗎? ASP.net具有App_Code文件夾的概念。從它的描述來看,就像你可以將.cs文件放入它一樣,即使在應用程序正在運行時,它也會被引入和編譯。是否有可能使用這種機制來動態創建一個可以在屬性聲明中使用的Enum或者const數組?屬性的動態參數

[SomeAttribute(ValidTypes.SomeType)] 
public class Foo 
{ 
} 

基本上,我想動態增長ValidTypes中的有效類型,而不必重新編譯引用它的所有組件。我需要保持它與數據庫表中的值列表同步。所以,我的問題是,我可以將.cs文件的Enum或const字符串數組的定義放入App_Code並自動顯示出來嗎?或者更好的是,.Net使用這種機制可以在別處調用,所以我不必在ASP.Net應用程序中執行此操作。

+0

http://stackoverflow.com/questions/3357109/whats-the-simplest-most-elegant-way-to-utilize-a-custom-attribute/3357145#3357145 – asawyer 2010-09-28 16:24:33

+0

遺憾asawyer但是這是不相關的。我知道如何製作和使用自定義屬性。我試圖繞過編譯時必須靜態定義屬性參數的問題。 – 2010-09-30 14:25:03

回答

0

即使您可以,您也必須重新編譯應用程序使用的附加值。聽起來像你想要的是代碼屬性來查找動態值。

+0

如果我的代碼是... if(constArray.Contains(value))等等......它將滿足參數爲常量的屬性要求。如果可以通過將.cs文件放入App_Code來動態加載(或更新)constArray的定義,那理論上它就可以工作,而無需重新編譯。 – 2010-09-30 14:27:33