2013-09-16 75 views
0

是否有更簡單的方法來調用反射方法,而不是像下面那樣創建methodInfo和object數組?如何調用反射方法

Assembly asm = Assembly.Load("Test"); 
Type t= asm.GetType("test.myclass"); 
object obj = Activator.CreateInstance(t); 
MethodInfo mi = t.GetMethod("foo"); 
object[] args = { 10, 70 }; 
Console.WriteLine("output {0}", mi.Invoke(obj, args)); 
+0

你能不能投obj對象給你,然後調用該對象的方法類型? – lex87

+0

你需要更多的描述來說明你想要做什麼。你在一個地方做幾次,在幾個不同的地方做幾次,或者在幾十個地方做幾百萬次。每種解決方案都會有所不同...... – plinth

回答

4

使用動態關鍵字:

Assembly asm = Assembly.Load("Test"); 
Type t = asm.GetType("test.myclass"); 
dynamic obj = Activator.CreateInstance(t); 
Console.WriteLine("output {0}", obj.Foo(10, 70)); 
+0

如果在編譯時未知該方法的名稱,則這將不起作用。雖然從這個問題是不是很清楚,情況是否如此。 – svick