C 的反射機制呼叫方法

2022-01-22 13:59:33 字數 1331 閱讀 1907

.net的反射(reflection)是非常完善和強大的,例如有名的.net反編譯工具red gate's .net reflector就是使用了.net自身的反射機制,這裡有乙個比較簡單的例項(使用控制台程式),看看.net中如何使用反射。

using system;  

using system.reflection;  

namespace mengliao.csharp.c13.s02  

public void m1()  

public static int m2(int x)  

public void m3(int x, double y)  

, y = .", x, y);  

}  public void m4()  

", count);  

}  private static string m5(double x) //私有靜態方法,不能直接呼叫,但可以繫結到委託  

}  class program  

);  

methodinfo methods = t.getmethods(); //獲取myclass的所有方法列表  

foreach (methodinfo nextmethod in methods) //列舉所有方法  

if (nextmethod.name == "m2") //方法m2  

", nextmethod.invoke(null, new object ));  

}  }  

methodinfo m3info = t.getmethod("m3"); //獲取方法m3  

m3info.invoke(obj, new object ); //呼叫方法m3,傳入對應的2個引數  

//獲取方法m4,使用obj物件呼叫方法,無引數  

t.invokemember("m4", bindingflags.invokemethod, null, obj, null);  

//建立泛型委託runme,並繫結myclass的靜態私有方法m5  

delegate runme = delegate.createdelegate(typeof(func), t, "m5");  

console.writeline("call delegate with m5: sqrt(2) = ", ((func)runme)(2)); //呼叫該委託  

console.readline();  

}  }  

}

使用反射機制可以呼叫各種方法,包括私有的、靜態的等等,程式中的注釋非常詳細,這裡就不多說了。

本文出自 「夢遼軟體工作室」 部落格,請務必保留此出處

C 的反射機制呼叫方法

net的反射 reflection 是非常完善和強大的,例如有名的.net反編譯工具red gate s net reflector就是使用了.net自身的反射機制,這裡有乙個比較簡單的例項 使用控制台程式 看看.net中如何使用反射。using system using system.reflec...

C 的反射機制呼叫方法

net的反射 reflection 是非常完善和強大的,例如有名的.net反編譯工具red gate s net reflector就是使用了.net自身的反射機制,這裡有乙個比較簡單的例項 使用控制台程式 看看.net中如何使用反射。using system using system.reflec...

反射機制 呼叫方法

通過反射機制,呼叫乙個物件的方法 獲取成員方法 public method getmethod string name,class.parametertypes 獲取單個公共成員方法 public method getdeclaredmethod string name,class.paramete...