只是为了确认没有办法避免 c# 属性中的硬编码值,对吧?
[SomeAttribute(3+1)]
public void Foo(string s)
或访问类成员或做任何未预编译的事情?
我现在探索postsharp 中重试机制的一个很好的例子- 并想看看我是否可以从系统外部配置重试次数
只是为了确认没有办法避免 c# 属性中的硬编码值,对吧?
[SomeAttribute(3+1)]
public void Foo(string s)
或访问类成员或做任何未预编译的事情?
我现在探索postsharp 中重试机制的一个很好的例子- 并想看看我是否可以从系统外部配置重试次数
属性构造函数参数和属性值被烘焙到编译的代码中。它们无法在执行时确定。
当然,如果你有一个愿意玩球的属性,你可以给它(比如说)一个类型和一个属性的名称,并要求它在执行时获取该属性值。(例如,这就是 NUnit 所做的[TestCaseSource]
。)但是您不能使用不知道这样做的属性来执行此操作。