如果某个方法具有某个属性,我希望能够在方法的开头添加一些代码。例如,如果它具有特定属性并且它是星期三,我希望它立即返回:
[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
不正确。我发布了该代码,以显示我已经接近(或远)。
如果该方法用指定的属性标记,如何在方法的开头插入代码?
答案 0 :(得分:0)
也许您可以尝试使用ConditionalAttribute,并设置一个永远不会成立的条件。例如....
[Conditional("NEVER")]
public static void MyMethod(int x)
{
//This code will never run
}
这将具有您想要的效果,但仅限于编译时。请注意,这仅适用于返回void
的方法。不知道你想要做什么来返回别的东西,因为你不想运行任何代码,因此无法实例化任何要返回的对象。
在方法的顶部添加一些反射:
using System.Reflection;
using System.Linq;
[Return()]
void MyMethod(int x)
{
var skip = MethodBase.GetCurrentMethod().GetCustomAttributes( typeof( ReturnAttribute ), false ).Any();
if (skip) return;
//Rest of the code goes here
}