C#动态方法调用
2024-07-21 02:24:59
供稿:网友
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:/>dynainvoke