How to do dynamic object creation and method invocation in .NET 3.5

thr picture thr · Jan 27, 2009 · Viewed 10.6k times · Source

How does the code looks that would create an object of class:

string myClass = "MyClass";

Of the above type, and then call

string myMethod = "MyMethod";

On that object?

Answer

Jon Skeet picture Jon Skeet · Jan 27, 2009

Example, but with no error checking:

using System;
using System.Reflection;

namespace Foo
{
    class Test
    {
        static void Main()
        {
            Type type = Type.GetType("Foo.MyClass");
            object instance = Activator.CreateInstance(type);
            MethodInfo method = type.GetMethod("MyMethod");
            method.Invoke(instance, null);
        }
    }

    class MyClass
    {
        public void MyMethod()
        {
            Console.WriteLine("In MyClass.MyMethod");
        }
    }
}

Each step needs careful checking - you may not find the type, it may not have a parameterless constructor, you may not find the method, you may invoke it with the wrong argument types.

One thing to note: Type.GetType(string) needs the assembly-qualified name of the type unless it's in the currently executing assembly or mscorlib.