欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C# » 正文

热门阅读

C# 反射机制的例子

创建时间:2011年08月01日 22:46  阅读次数:(6340)
分享到:
有关反射理论知识,请参考本站C# 反射机制概论

有关C#中反射机制的理论知识,比较空泛和涩涩,这章拿一个简单易懂的例子说明,反射机制的运用,其中包括根据配置文件中的信息,动态加载类实例的方法,反射为我们提供了动态实例化类的机制,但是由于它是运行时加载和其内部的一些问题,所以反射的性能比较低。我们在实际工作中,可视情况运用反射机制。

定义了一个Car类,下面咱们就应用反射机制来运行时加载它:
public class Car
{
private string _engin1;
private string _engin2;

public string Engin1
{
get { return _engin1;}
set { this._engin1 = value;}
}
public string Engin2
{
get { return _engin2;}
set { _engin2 = value;}
}

public String GetCar()
{
return "i am a car";
}
}


//反射实例的客户代码,在这是一个窗体;在窗体的Load事件中,定义了两种利用反射机制,动态生成实例的方法,第一个是利用反射中的Assembly类进行的;第二个是利用反射中的Activator类进行的。
using System.Reflection;
using System.Configuration;

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Assembly a = Assembly.Load("ReflectionTest");
Car car1 = (Car)a.CreateInstance("ReflectionTest.Car");
this.textBox1.Text = car1.GetCar();

//根据配置文件来得到类的信息,根据反射来初始化它
//要引用System.Configuration.dll
String carString = System.Configuration.ConfigurationManager.AppSettings["car"];
Type t = a.GetType(carString);
Car car2 = (Car)Activator.CreateInstance(t);
this.textBox2.Text = car2.GetCar().ToString();
}
}


配置文件的内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="car" value="ReflectionTest.Car" />
</appSettings>
</configuration>


反射机制并不是多么复杂,我们可以同过上面的例子看到,代码就几行,只要理解了反射机制的原理,我想,我们很容易把反射机制很好的运用在开发中。
来源:http://blog.sina.com.cn/s/blog_61090e890100fxs2.html
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 57+5=? 的结果(结果是:62)
结  果: