У меня есть переменная, которая содержит функцию иерархии как:Передача функции в качестве параметра метода Invoke из System.Reflection
string str= "fun1(fun2(),fun3(fun4(fun5(34,33,'aa'),'value',fun6()))"
// эта иерархия наступающем в виде строки из базы данных
У меня есть импортированный System.reflection и используемый метод invoke для его вызова, но он работает только в том случае, если у меня есть только одна функция fun1
.
С вышеуказанной функциональной иерархией оно принимает полное выражение как одно имя функции.
Я использую этот код, приведенный ниже, чтобы вызвать мою функцию иерархии:
public static string InvokeStringMethod(string typeName, string methodName)
{
// Get the Type for the class
Type calledType = Type.GetType(typeName);
// Invoke the method itself. The string returned by the method winds up in s
String s = (String)calledType.InvokeMember(
methodName,
BindingFlags.InvokeMethod | BindingFlags.Public |
BindingFlags.Static,
null,
null,
null);
// Return the string that was returned by the called method.
return s;
}
Ссылка: http://www.codeproject.com/KB/cs/CallMethodNameInString.aspx
Пожалуйста, скажите мне, что я должен делать?
Фактически я получаю значения (функция hierachy) из таблицы, поэтому он будет в строковой форме, а не как функции. Пожалуйста, предложите –
Итак, код на самом деле содержит строку 'str str =" fun1 (...) ";', правильно? Но это совершенно другая ситуация. Невозможно выполнить такое выражение с помощью отражения. Скорее всего, вам придется скомпилировать его с помощью CodeDom во временную сборку a, выполнить ее. –
Спасибо за поддержку –