Я пытаюсь вызвать метод через отражение с параметрами, и я получаю:
объект не соответствует типу цели
Если я вызываю метод без параметров, он отлично работает. Основываясь на следующем коде, если я вызываю метод Test("TestNoParameters"), он отлично работает. Однако, если я вызываю Test("Run"), я получаю исключение. Что-то не так с моим кодом?
Моя первоначальная цель состояла в том, чтобы передать массив объектов, например. public void Run(object[] options), но это не сработало, и я попробовал что-то более простое, например. строка без успеха.
// Assembly1.dll
namespace TestAssembly
{
    public class Main
    {
        public void Run(string parameters)
        { 
            // Do something... 
        }
        public void TestNoParameters()
        {
            // Do something... 
        }
    }
}
// Executing Assembly.exe
public class TestReflection
{
    public void Test(string methodName)
    {
        Assembly assembly = Assembly.LoadFile("...Assembly1.dll");
        Type type = assembly.GetType("TestAssembly.Main");
        if (type != null)
        {
            MethodInfo methodInfo = type.GetMethod(methodName);
            if (methodInfo != null)
            {
                object result = null;
                ParameterInfo[] parameters = methodInfo.GetParameters();
                object classInstance = Activator.CreateInstance(type, null);
                if (parameters.Length == 0)
                {
                    // This works fine
                    result = methodInfo.Invoke(classInstance, null);
                }
                else
                {
                    object[] parametersArray = new object[] { "Hello" };
                    // The invoke does NOT work;
                    // it throws "Object does not match target type"             
                    result = methodInfo.Invoke(methodInfo, parametersArray);
                }
            }
        }
    }
}
