2013-09-16 42 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