Question: I have a method that I call multiple times, but each time a different method with a different signature is called from inside. 

```
public void MethodOne()
{
//some stuff

*MethodCall();

//some stuff

}

```

So `MethodOne` is called multiple times, each time with a different `*MethodCall()`. What I'm trying to do is something like this :

```
public void MethodOne(Func<> MethodCall)
{
//some stuff

*MethodCall;

//some stuff

}

```

but the Methods that are called each have a different return type and different parameters. Is there a way to do this using Functors? If not, how would I go about doing this?

Thank you!

Answer: 
You cannot call a function which requires parameters without supplying them, so the answer is "no, not possible"

Also, maybe you want the following:

```
void MethodOne(Action a)
{
    // some stuff
    a();
    // some stuff
}

... // somewhere in the code
MethodOne((Action)(() => { DoSomethingOther(1, 2, 3); }));
MethodOne((Action)(() => { DoSomethingEvenDifferent(1, 2, 3, 4, 5); }));

```
This is basically not possible. You could make `MethodOne` generic for the return type, and use a lambda that closes over its outside block instead of parameters:

```
static void Main(string[] args)
{
    int parameterSubst = 1;
    int result = MethodOne<int>(() => parameterSubst);
    string result2 = MethodOne<string>(() =>
    {
        string s = parameterSubst.ToString();
        s += "foo";
        return s;
    });
}

static T MethodOne<T>(Func<T> function)
{
    return function();
}

```

As you can see, `parameterSubst` is used in the passed `Func<T>`s, but not as a parameter.