Edit: Thank you for the answers. I am currently working on it!!\
I have 3 methods, S() returns string, D() returns double and B() returns bool.
I also have a variable that decides which method I use. I want do this:
// I tried Func<object> method; but it says D() and B() don't return object.
// Is there a way to use Delegate method; ? That gives me an eror saying method group is not type System.Delegate
var method;
var choice = "D";
if(choice=="D")
{
method = D;
}
else if(choice=="B")
{
method = B;
}
else if(choice=="S")
{
method = S;
}
else return;
DoSomething(method); // call another method using the method as a delegate.
// or instead of calling another method, I want to do:
for(int i = 0; i < 20; i++){
SomeArray[i] = method();
}
Is this possible?
I read this post: Storing a Method as a Member Variable of a Class in C# But I need to store methods with different return types...
Well, you could do:
Then
DoSomething
would be declared as justDelegate
, which isn't terribly nice.Another alternative would be to wrap the method in a delegate which just performs whatever conversion is required to get the return value as
object
: