У меня есть простой статический метод, который не содержит параметров, возвращает что-либо или принимает какие-либо аргументы. Я бегу это так:Запуск статического метода с параметром out с использованием отражения
Assembly assembly = ResourceConfig.GetAssembly("IntegrationServices");
assembly.GetStaticMethod("Current.IntegrationServices.SomeIntegration.SomeMethod").Invoke();
который, кажется, работает нормально ...
Далее я есть статический метод, который возвращает один из параметров (это строка), и возвращает логическое значение. Я хочу запустить это, но не могу понять, что я делаю неправильно. Это то, что я до сих пор:
var objectArray = new object[1];
(bool)assembly.GetStaticMethod("Current.IntegrationServices.SomeIntegration.ReturningMethod").Invoke(objectArray)
Из того, что я понял, я должен быть в состоянии получить доступ к objectArray [0] и получить свой выход значение .. но при попытке запустить этот код я получаю ошибку:
Method Current.IntegrationServices.SomeIntegration.ReturningMethod() cannot be found.
И я уверяю вас, метод действительно существует ... :)
Вызов этого метода без отражения будет происходить так:
string s;
bool value = Current.IntegrationServices.SomeIntegration.ReturningMethod(out s);
Любые предложения о том, как запустить его с помощью метода GetStaticMethod и Invoke?
EDIT: Я только что нашел метод под названием GetStaticMethodWithArgs (это Assembly obj, string methodName, params Type [] list): MethodDelegate, как бы я это использовал?
EDIT 2: Теперь я смог запустить статический метод с аргументами, и это происходит так:
Assembly assembly = ResourceConfig.GetAssembly("IntegrationServices");
var staticMethodWithArgs = assembly.GetStaticMethodWithArgs("Current.IntegrationServices.SomeIntegration.ReturningMethod", typeof(string), typeof(string));
staticMethodWithArgs.Invoke(InputUsername.Text, InputPassword.Text)
Еще косяк метода использования с параметром из ... предложений являются appriciated
Вы должны вызвать '.Invoke (null, objectArray)' вместо '.Invoke (objectArray)'. – Steven
Все еще говорит, что не может быть найден ... должен ли новый объект [1] иметь какую-то магию? –
Вы видели этот связанный вопрос: http://stackoverflow.com/questions/2438065/c-sharp-reflection-how-can-i-invoke-a-method-with-an-out-parameter. – Steven