The following code will execute the method “YourMethod” for the class “Fully.Qualified.TypeName”, and the result of that method will be stored in object “result”.

// load the type from the assemblies in memory
Type type = null;
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();

// attempt to load the type
foreach (Assembly assembly in assemblies)
{
  type = assembly.GetType("Fully.Qualified.TypeName");
  if (type != null) break;
}

if (type == null) 
  throw new ApplicationException("Unable to dynamically load type");
          
object dynamicObject = Activator.CreateInstance(type);
if (dynamicObject == null) 
  throw new ApplicationException("Unable to dynamically create instance of " + type.FullName);

object[] arguments = new object[] { "arg1", "arg2" };

object result = type.InvokeMember("YourMethod",
  BindingFlags.Default | BindingFlags.InvokeMethod,
  null,
  dynamicObject,
  arguments
  );