只是为了确认没有办法避免在 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/