首页 > 开发 > 综合 > 正文

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表