有关反射理论知识,请参考本站
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学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!