属性的动态参数

Posted

技术标签:

【中文标题】属性的动态参数【英文标题】:Dynamic parameters for attributes 【发布时间】:2011-04-18 09:50:24 【问题描述】:

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

[SomeAttribute(ValidTypes.SomeType)]
public class Foo


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

【问题讨论】:

***.com/questions/3357109/… 很抱歉,但这无关紧要。我知道如何制作和使用自定义属性。我试图规避必须在编译时静态定义属性参数的问题。 【参考方案1】:

即使可以,您也必须重新编译应用程序以使用添加的值。听起来你想要的是代码 in 用于查找动态值的属性。

【讨论】:

如果我的代码是... if (constArray.Contains(value)) blah ... 它将满足将参数设为常量的属性要求。如果 constArray 的定义可以通过将 .cs 文件拖放到 App_Code 中来动态加载(或更新),那么理论上它无需重新编译就可以工作。

以上是关于属性的动态参数的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 3 html 动态类基于计算属性传递参数

如何使用动态名称实现属性()(在python中)

VUE项目实战44渲染静态属性和动态参数的Tab

Python的动态添加属性与方法

装饰模式之AOP之动态改变参数,和原函数绑定属性丢失

Django - 动态模型参数值