我有一个在发生异常时调用的方法:
public void ErrorDBConcurrency(DBConcurrencyException e)
{
MessageBox.Show("You must refresh the datasource");
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是将此函数传递给方法,因此如果用户单击是,则调用该方法,例如
public void ErrorDBConcurrency(DBConcurrencyException e, something Method)
{
if (MessageBox.Show("You must refresh the datasource") == DialogResult.OK)
Method();
}
Run Code Online (Sandbox Code Playgroud)
方法可能有也可能没有参数,如果是这种情况我也想传递它们.
我怎么能做到这一点?
Cha*_*ion 30
您可以使用Action委托类型.
public void ErrorDBConcurrency(DBConcurrencyException e, Action method)
{
if (MessageBox.Show("You must refresh the datasource") == DialogResult.OK)
method();
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
void MyAction()
{
}
ErrorDBConcurrency(e, MyAction);
Run Code Online (Sandbox Code Playgroud)
如果确实需要参数,可以使用lambda表达式.
ErrorDBConcurrency(e, () => MyAction(1, 2, "Test"));
Run Code Online (Sandbox Code Playgroud)
添加Actionas参数:
public void ErrorDBConcurrency(DBConcurrencyException e, Action errorAction)
{
if (MessageBox.Show("You must refresh the datasource") == DialogResult.OK)
errorAction()
}
Run Code Online (Sandbox Code Playgroud)
然后你就可以这样称呼它
ErrorDBConcurrency(ex, () => { do_something(foo); });
Run Code Online (Sandbox Code Playgroud)
要么
ErrorDBConcurrency(ex, () => { do_something_else(bar, baz); });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42853 次 |
| 最近记录: |