属性的动态参数

问题描述:

我知道属性声明的参数必须是常量表达式,并在编译时解析。但是,我可以玩'编译时间'的概念吗? ASP.net具有App_Code文件夹的概念。从它的描述来看,就像你可以将.cs文件放入它一样,即使在应用程序正在运行时,它也会被引入和编译。是否有可能使用这种机制来动态创建一个可以在属性声明中使用的Enum或者const数组?属性的动态参数

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

基本上,我想动态增长ValidTypes中的有效类型,而不必重新编译引用它的所有组件。我需要保持它与数据库表中的值列表同步。所以,我的问题是,我可以将.cs文件的Enum或const字符串数组的定义放入App_Code并自动显示出来吗?或者更好的是,.Net使用这种机制可以在别处调用,所以我不必在ASP.Net应用程序中执行此操作。

+0

http://*.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

如果我的代码是... if(constArray.Contains(value))等等......它将满足参数为常量的属性要求。如果可以通过将.cs文件放入App_Code来动态加载(或更新)constArray的定义,那理论上它就可以工作,而无需重新编译。 – 2010-09-30 14:27:33