如何在c#运行时执行一次方法

时间:2011-05-03 07:53:54

标签: c# reflection methods runtime

是否有可能在不使用外部属性的情况下在实例运行期间多次阻止方法执行?

我希望我很清楚! 最好成绩

5 个答案:

答案 0 :(得分:3)

尝试使用static constructor

答案 1 :(得分:3)

public class TestClass
{
static private bool _isExecutedFirst = false;

public void MethodABC()
{
if(!_isExecutedFirst)
_isExecutedFirst = true;
else
throw Exception("Method executed before");
/////your code

} 
}

希望这个帮助

答案 2 :(得分:0)

确定,带有一个标志,指示实例上的方法是否已运行。

public class RunOnceMethod
{
  private bool haveIRunMyMethod = false

  public void ICanOnlyRunOnce()
  {
    if(haveIRunMyMethod)
      throw new InvalidOperationException("ICanOnlyRunOnce can only run once");

    // do something interesting

    this.haveIRunMyMethod = true;
  }
}

答案 3 :(得分:0)

是, 你可以像这样使用

void method(args)
{
    static int a;
    if(a != 0)
    {
        return;
    }
    // body of method and 
    a++;
}

原因是这个静态的a不会被复制到函数调用的激活记录中,并且只会共享一个a。

我希望这可以解决你的问题。

答案 4 :(得分:0)

不,没有办法阻止方法执行而不存储某种“状态”,说方法已被执行。

这样做的一种方法是在开始时进行“警卫”/检查:

private bool AExecuted = false;
public void A()
{
    if (AExecuted)
       return;
    else
       AExecuted = true;

    /* Your code */
}