Я пытаюсь вызвать метод из динамического, не зная его имени. У меня есть трудности, чтобы объяснить это на английском, так что есть код:Вызов динамического метода из строки
public void CallMethod(dynamic d, string n)
{
// Here I want to call the method named n in the dynamic d
}
Я хочу что-то вроде: d.n()
но с п заменить строкой.
Я хочу это:
Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
theMethod.Invoke(this, userParameters);
но с динамической.
Если вам нужен контекст, который поможет вам: я создаю приложение, поддерживающее «моды», вы помещаете библиотеки DLL в папку мод и загружаете его и выполняете. Он работает с динамиком (у меня есть такая дрессировка: Dictionnary<string, dynamic> instances;
). Я хочу, чтобы приложение получало имя метода из библиотеки (с instances["topkek"].GetMethods();
, я уже сделал этот метод), но затем вызовите метод с возвращаемой им строкой. Я не знаю, что то, что я сказал, что-то значит (я французский: /) ...
Я использую VS 2013 Express с .Net framework 4.5, если вам нужна дополнительная информация, чтобы помочь мне спросить меня ,
Как вы будете знать, какой метод вызвать? Вы можете использовать ['Type.GetMethods'] (http://msdn.microsoft.com/en-us/library/system.type.getmethods) на« нормальном »типе - не знаете, как он будет работать с 'dynamic'. –
Ваш вопрос слишком широк и дает очень мало деталей. Попробуйте приложить некоторые усилия и объясните сами. –
Метод указан пользователем, мне нужно что-то вроде: «d.n()», ofc, если метод не существует, он сработает. Так что это невозможно с динамикой? – SwagLordKnight