c#将方法名称作为方法中的参数传递

Ala*_*ett 2 c# methods

我有一个recuring方法,它在我的代码中多次显示它基本上检查以确保与odbc的连接是正确的然后连接但每次调用此方法时它调用另一个方法和main方法的每个实例这一个是不同的,因为每个方法大约有8行代码,在代码中有8次是不理想的.

所以基本上我想有一个方法,我可以调用传递新方法的名称作为争论.

所以基本上像:

private void doSomething(methodToBeCalled) { if(somthingistrue) { methodToBeCalled(someArgument) } }

这可能吗?

提前致谢

sta*_*ica 8

如前所述,您可以使用代理:

// as in the original post:
private void doSomething(Action methodToBeCalled)
{
    if (somethingIsTrue)
    {
        methodToBeCalled();
    }
}
Run Code Online (Sandbox Code Playgroud)

对于没有任何参数的方法,此方法调用如下:

private void someMethod()
{
    // ...
}

doSomething(someMethod);
Run Code Online (Sandbox Code Playgroud)

如果要使用参数调用方法,可以在其周围包装lambda函数:

private void someMethodWithArgument(int arg)
{
    // ...
}

doSomething( () => someMethodWithArgument(42) );
Run Code Online (Sandbox Code Playgroud)

当然,如果要调用的方法总是使用相同类型的参数,则可以声明doSomething方法,以便它接受Action<T>/ Action<T,T>/ etc.参数.如果希望被调用的方法返回值,请使用来自Func<T>系列的委托.