如何通过“发送者”对象检查“方法组”?

| 想象这样的方法(在Win Forms中):
//First method
private void buttonStart_Click(object sender, EventArgs e)
{
       //I call another method here
       this.GetData(sender, null)
}

//Second method
private void GetData(object sender, EventArgs e)
{
       //how to check IF calling method is buttonStart_Click ???
       if(sender.Equals == buttonStart_Click) 
       {
            //DO BLAH BLAH
       }
}
我希望我很清楚,那就是我想知道哪个方法正在调用\'GetData \'。请注意,我知道我可以有一个全局变量并将其设置为某种值,但是我想知道是否有直接方法来做到这一点? 谢谢。
已邀请:
sender
不会是
buttonStart_Click
,而只是按钮。因此,您可以对其进行测试。
if (sender != null && sender.Equals(buttonStart))
{
   // work with this information
}
但是,如果您发现自己走这条路,可能最终会看到多个
if
块,每个块的行为取决于
sender
的身份而有所不同。如果是这种情况,最好使用其他方法。每个事件都有一个不同的处理程序,通过委托封装不同的逻辑,等等。不要以充满full6的页面结尾。
如果由于您从其他方法中调用了该方法而不得不执行其他操作,则最好只调用另一个方法:
//First method
private void buttonStart_Click(object sender, EventArgs e)
{
       //I call another method here
       this.SpecialGetData(sender, null)
}

//Second method
private void GetData(object sender, EventArgs e)
{
     // Do regular stuff
}

//Special second method
private void SpecialGetData(object sender, EventArgs e)
{
    //DO BLAH BLAH
}
不知道为什么要这样做,但是如果您需要... http://www.csharp411.com/c-get-calling-method/

要回复问题请先登录注册