C#attributes \ avoid硬编码值

时间:2012-11-20 09:37:11

标签: c# attributes postsharp

只是为了确认没有办法避免c#属性中的硬编码值吗?

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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