163K网站系统官方论坛's Archiver

zjzj 发表于 2007-2-16 12:00

.net教程:c#动态方法调用

[size=3]dynamic method invocation

one very useful feature related to reflection is the ability to create objects dynamically and call methods on them.
note : class1.cs has methods which will be dynamically invoked at runtime from the dynainvoke.cs

class1.cs

using system;
class class1{
       public static string method1()
       {
           return "i am static method (method1) in class1";
       }
       public string method2()
       {
           return "i am a instance method (method2) in class1";
       }
       public string method3(string s)
       {

          return "hello " + s;
       }
}
save this file as class1.cs and compile c:/>csc /t:library class1.cs


dynainvoke.cs

using system;
using system.reflection;
class dynamicinvoke
{
public static void main(string [] args)
{

string path = "class1.dll"
assembly a = assembly.load(path);

//invoking a static method
type mm = a.gettype("class1");
string i = (string) mm.invokemember ("method1",bindingflags.default | bindingflags.invokemethod,null,null,new object [] {}); console.writeline(i);

//invoking a non-static method
object o = activator.createinstance(mm);
i = (string) mm.invokemember("method2",bindingflags.default | bindingflags.invokemethod,null,o,new object [] {});
console.writeline(i);

//invoking a non-static method with parameters
object [] par = new object[] {"kunal"};
i = (string) mm.invokemember("method3",bindingflags.default | bindingflags.invokemethod,null,o,par);

console.writeline(i);
}
}

save this file as dynainvoke.cs and compile c:/>csc dynainvoke.cs and run c:\>dynain



[/size]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.