Как уже было сказано, для этого вы можете использовать делегатов:
// as in the original post:
private void doSomething(Action methodToBeCalled)
{
if (somethingIsTrue)
{
methodToBeCalled();
}
}
Для методов без аргументов этот метод называется, например, следующим образом:
private void someMethod()
{
// ...
}
doSomething(someMethod);
Если вы хотите вызвать метод с аргументами, вы можете обернуть его лямбда-функцией:
private void someMethodWithArgument(int arg)
{
// ...
}
doSomething( () => someMethodWithArgument(42) );
Конечно, если вызываемые вами методы всегда принимают один и тот же тип аргумента, вы можете объявить свой метод doSomething
, чтобы он принимал аргумент Action<T>
/ Action<T,T>
/ etc. Если вы хотите, чтобы вызываемые методы возвращали значение, используйте вместо этого делегат из семейства Func<T>
.