【发布时间】:2017-01-18 19:42:42
【问题描述】:
如果方法具有特定属性,我希望能够在方法的开头添加一些代码。例如,如果它具有特定属性并且是星期三,我希望它立即返回:
[Return()]
public void MyMethod()
{
//If [Return()] attribute and its Wednesday, it returns and never "Does Stuff"
//Do Stuff
}
我的属性已经开始,但我不知道如何在方法之前运行代码。
[AttributeUsage(AttributeTargets.Method)]
public class ReturnAttribute : Attribute
{
public void Return()
{
if(Today == Wednesday)
{
return;
}
{
}
我知道ReturnAttribute 不正确。我发布了该代码以显示我离我有多近(或多远)。
如果方法标有指定的属性,我如何在方法的开头插入代码?
【问题讨论】:
-
你可能想看看 Fody 库,看看它们是如何工作的
-
您必须向每个添加了
[Return]的方法添加代码,以使用反射来查找属性、实例化它然后运行它。将返回bool的单行辅助方法添加到方法的顶部并在其为真时返回会简单得多。 ``` public void Blah() { if (Helper.IsItWednesday()) { return; } } ``` -
这个技术都是关于方法拦截的。请看一下这个问题:stackoverflow.com/questions/25366243/intercept-method-calls。仔细看看第二个答案,想象一下
_stopWatch = Stopwatch.StartNew();被“if day not is Wednesday”替换
标签: c# annotations attributes