首页后端开发ASP.NET总结反射技术的实际应用。

总结反射技术的实际应用。

时间2024-01-30 09:45:03发布访客分类ASP.NET浏览795
导读:收集整理的这篇文章主要介绍了总结反射技术的实际应用。,觉得挺不错的,现在分享给大家,也给大家做个参考。 前面总结了反射的使用,这一篇结合一个完整的项目来总结下反射的实际应用。项目结构如下图: 定义插件接口在项目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
带你了解Angular中的组件通讯和依赖注入 使用 VSCode 编写 .NET Core 项目的实例教程

游客 回复需填写必要信息