C# 属性\避免硬编码值

标签 c# attributes postsharp

只是为了确认没有办法避免在 C# 属性中使用硬编码值,对吧?

[SomeAttribute(3+1)]
public void Foo(string s)

或访问类成员或做任何未预编译的事情?

我现在探索 great example of retry mechanism in postsharp - 并想看看我是否可以从系统外部配置重试次数

最佳答案

属性构造函数参数和属性值被烘焙到编译代码中。它们无法在执行时确定。

当然,如果您有愿意玩球的属性,您可以给它(比方说)一个类型和一个属性的名称,并要求它在执行时获取该属性值。 (That's what NUnit does for [TestCaseSource], for example.)但是你不能用一个不知道这样做的属性来做到这一点。

关于C# 属性\避免硬编码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13470259/

相关文章:

C# Linq Where(表达式).FirstorDefault() 与 .FirstOrDefault(表达式)

c# - 查询在 SQL Server 2005 中有效,但在 SQL Server 2000 中出现语法错误

python-3.x - python 3 从父方法调用子属性

jquery - 按数据属性过滤

blazor - PostSharp 和 Blazor

c# - 从自定义 PostSharp 属性内部访问请求 header

c# - 如何将 C# 字符串数组编码为 VB6 数组?

c# - 从 xml 注入(inject)依赖绑定(bind)

c# - 创建规则以对参数属性强制执行默认值

c# - 无需反射,根据类属性实现接口(interface)