0
的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
請告訴我,我該怎麼辦?
實際上,我從表中獲取值(函數層次結構),因此它將以字符串形式顯示,而不是函數。請建議 – 2010-10-12 11:55:28
因此,代碼實際上指出'string str =「fun1(...)」;',對吧?但這是**非常不同的情況。沒有辦法使用反射來執行這種表達。您很可能必須使用CodeDom將其編譯爲臨時程序集並執行它。 – 2010-10-12 11:58:43
感謝您的支持 – 2010-10-12 12:02:42