总结反射技术的实际应用。
导读:收集整理的这篇文章主要介绍了总结反射技术的实际应用。,觉得挺不错的,现在分享给大家,也给大家做个参考。 前面总结了反射的使用,这一篇结合一个完整的项目来总结下反射的实际应用。项目结构如下图: 定义插件接口在项目ConsoleApplica...
收集整理的这篇文章主要介绍了总结反射技术的实际应用。,觉得挺不错的,现在分享给大家,也给大家做个参考。 前面总结了反射的使用,这一篇结合一个完整的项目来总结下反射的实际应用。项目结构
如下图:
定义插件接口
在项目ConsoleApplication6.IService中,定义了两个接口,Run代表行驶,Trun代表转向,如下代码:
1 namespace ConsoleApplication6.IService 2 {
3 /// summary>
4 /// 创建一个车的接口 5 /// /summary>
6 public interface ICarService 7 {
8 /// summary>
9 /// 行驶10 /// /summary>
11 void Run();
12 13 /// summary>
14 /// 转向15 /// /summary>
16 /// param name="direction">
/param>
17 void Turn(Direction direction);
18 19 }
20 21 public enum Direction22 {
23 East,24 Weast,25 South,26 North27 }
28 }
插件程序实现
这里新建了两个项目分别实现插件程序,分别是ConsoleApplication6.Service.BMW和ConsoleApplication6.Service.BenZ,代码如下:
1 namespace ConsoleApplication6.Service.BMW 2 {
3 public class BMWCarService: ICarService 4 {
5 /// summary>
6 /// 行驶 7 /// /summary>
8 public void Run() 9 {
10 Console.WrITeLine("BMW Car Run!");
11 }
12 13 /// summary>
14 /// 转向15 /// /summary>
16 /// param name="direction">
/param>
17 public void Turn(Direction direction)18 {
19 Console.WriteLine(string.Format("BMW Car turn:{
0}
", direction.ToString()));
20 }
21 }
22 }
1 namespace ConsoleApplication6.Service.BenZ 2 {
3 public class BenZCarService: ICarService 4 {
5 /// summary>
6 /// 行驶 7 /// /summary>
8 public void Run() 9 {
10 Console.WriteLine("BenZ Car Run!");
11 }
12 13 /// summary>
14 /// 转向15 /// /summary>
16 /// param name="direction">
/param>
17 public void Turn(Direction direction)18 {
19 Console.WriteLine(string.Format("BenZ Car turn:{
0}
", direction.ToString()));
20 }
21 }
22 }
运行程序
接下来我们就可以利用反射来运行这个插件程序了,如下代码:
1 namespace ConsoleApplication6 2 {
3 class PRogram 4 {
5 static void Main(string[] args) 6 {
7 VAR asSEMbly = Assembly.Load("ConsoleApplication6.Service.BMW");
//也可以从配置文件中读取 8 var t = assembly.GetTyPE("ConsoleApplication6.Service.BMW.BMWCarService");
//也可以从配置文件中读取 9 10 //创建一辆车的实例11 var obj = Activator.Createinstance(t);
12 ICarService car = obj as BMWCarService;
13 if (car != null)14 {
15 car.Run();
16 car.Turn(Direction.East);
17 }
18 19 Console.ReadKey();
20 }
21 }
22 }
这样,一个简单的插件程序就完成了,同时,如果我们开发类似的插件框架,就会大量使用到反射技术。
以上就是总结反射技术的实际应用。的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 总结反射技术的实际应用。
本文地址: https://pptw.com/jishu/592357.html
