请教 如何用c#反射得到private成员函数和变量

请教 如何用c#反射得到private成员函数和变量,第1张

Graphics g = ;

private void pictureBox1_Paint(object sender, PaintEventArgs e)

{

g = eGraphics;

}

}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

{

//这里要怎么调用g

首先要对G判断一下,是不是为NULL,再调用。

}

#region 动态获取变量值

private int i = 10;

/// <summary>

/// 通过变量名获取变量值

/// </summary>

/// <param name="s">变量名,默认值为i,可不填</param>

public object GetValueByName(string s = "i")

{

FieldInfo f = GetType()GetField(s);

if (f != null)

{

return fGetValue(this);

}

return f;

}

#endregion

注意!这个只针对于动态获取当前类里的变量值,不能获取当前方法内的变量值。

反射:在运行状态下,通过class文件对象,去使用构造方法,成员变量,成员方法

方法有三种:

1类名class

2对象getclass()

3classforName("包名类名")

好处:

只要有一个类或者一个类的对象,就可以得到这个类或对象的所有属性和方法,包括私有的

同步方法

反射成员方法:

1获取字节码文件

Class c = ClassforName("包名类名");

2反射方法

Method m = cgetMethod("反射的方法",方法的参数类型class);

3用方法,minvoke(对象,参数) 对象,cnewInstance ,在A建立对象。

minvoke(cnewInstance(),参数);

类加载器与反射有什么关系

反射是通过字节码文件对象,将类的字段,方法,构造器等映射成相应的类,并进行各自的 *** 作;

类加载器是通过某个类的classLoader()方法,将该类的class文件从硬盘中加载到java虚拟机中,形成字节码文件;

亲 你说的是不是,工厂模式

interface PP{

}

class Man implements pp{

}

class Women implements PP{

}

class Wood implements PP{

}

class Fish implements PP{

}

class PPFactory {

public static PP getOne(String str){

if(strequals("man")){

return new Man();

}else if("woman"equals(str)){

return new Woman();

}else if("wood"equals(str)){

return new Wood();

}

}

}

class Test{

main(){

PP p = PPFactorygetOne("man");

PP p = PPFactorygetOne("woman");

}

}提交回答

以上就是关于请教 如何用c#反射得到private成员函数和变量全部的内容,包括:请教 如何用c#反射得到private成员函数和变量、C#,已知字符串,如何获取到这个变量。、反射是什么反射获取字节码文件的三种方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9463807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存