How to pass a class and a method name as strings and invoke that class' method?
Like
void caller(string myclass, string mymethod){
// call myclass.mymethod();
}
Thanks
See Question&Answers more detail:osHow to pass a class and a method name as strings and invoke that class' method?
Like
void caller(string myclass, string mymethod){
// call myclass.mymethod();
}
Thanks
See Question&Answers more detail:osYou will want to use reflection.
Here is a simple example:
using System;
using System.Reflection;
class Program
{
static void Main()
{
caller("Foo", "Bar");
}
static void caller(String myclass, String mymethod)
{
// Get a type from the string
Type type = Type.GetType(myclass);
// Create an instance of that type
Object obj = Activator.CreateInstance(type);
// Retrieve the method you are looking for
MethodInfo methodInfo = type.GetMethod(mymethod);
// Invoke the method on the instance we created above
methodInfo.Invoke(obj, null);
}
}
class Foo
{
public void Bar()
{
Console.WriteLine("Bar");
}
}
Now this is a very simple example, devoid of error checking and also ignores bigger problems like what to do if the type lives in another assembly but I think this should set you on the right track.