C 的反射機制呼叫方法

2021-09-06 03:31:36 字數 1769 閱讀 3601

.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

intm2(

intx)

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

inmethods)

//列舉所有方法 if

(nextmethod.name =="

m2") //

方法m2

", nextmethod.invoke(

null

, new

object

));

} }

methodinfo m3info

=t.getmethod("m3

");

//獲取方法m3

m3info.invoke(obj,

newobject

); //呼叫方法m3,傳入對應的2個引數

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

t.invokemember("m4

", bindingflags.invokemethod,

null

, obj,

null

); //

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

delegate runme

=delegate.createdelegate(

typeof

(func

<

double

, string

>

), t, "m5

");

console.writeline(

"call delegate with m5: sqrt(2) =

", ((func

<

double

, string

>

)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...