4

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

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

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

我现在探索postsharp 中重试机制的一个很好的例子- 并想看看我是否可以从系统外部配置重试次数

4

1 回答 1

5

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

当然,如果你有一个愿意玩球的属性,你可以给它(比如说)一个类型和一个属性的名称,并要求它在执行时获取该属性值。(例如,这就是 NUnit 所做的[TestCaseSource]。)但是您不能使用不知道这样做的属性来执行此操作。

于 2012-11-20T09:41:22.640 回答