阅读目录

1、介绍

2、实现

  2.1、非泛型反射

  2.3、泛型反射

3、扩展

  3.1、通过配置修改数据库类型

 4、参考

返回系列文章目录 

 

开始阅读  完整代码下载

1、介绍

   反射提供描述程序集、模块和类型的对象(Type 类型)。 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后调用其方法或访问其字段和属性。 如果代码中使用了特性,可以利用反射来访问它们。大白话说就是,可以把编译成exe或者dll的程序集,加载到内存创建对象来使用,后面会扩展一个案例,程序集里面通过配置切换多个数据库使用。

2、实现

2.1、非泛型反射

  做实现之前需要准备一个dll文件,我这里用的net5编译的,下面给出源代码,编译好后,另外创建一个项目来实现非泛型反射的实现。
注意:Assembly.LoadFile只载入相应的dll文件,比如Assembly.LoadFile("a.dll"),则载入a.dll,假如a.dll中引用了b.dll的话,b.dll并不会被载入。Assembly.LoadFrom则不一样,它会载入dll文件及其引用的其他dll,比如上面的例子,b.dll也会被载入。

 1 // 
 2 using System;
 3 
 4 namespace Demo02_DLL
 5 {
 6     [Author("BigBox777")]
 7     public class Test
 8     {
 9         public int Id=2;
10         public string Name { get; set; }
11         public DateTime Time { get; set; }
12         public Test()
13         {
14             Name = "BigBox777";
15             Time = DateTime.Parse("1971-01-01 12:00:00");
16             Console.WriteLine("调用了构造函数:public Test()");
17         }
18         public Test(string name)
19         {
20             Name = name;
21             Time = DateTime.Parse("1971-01-01 12:00:00");
22             Console.WriteLine($"调用了构造函数:public Test(string name),传入参数:{name}");
23         }
24         public void Show()
25         {
26             Console.WriteLine($"Id:{Id},Name:{Name},Time:{Time}");
27         }
28     }
29     //自定义特性
30     [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, AllowMultiple = true)]
31     public class Author : System.Attribute
32     {
33         string name; 
34         public double version;
35 
36         public Author(string name)
37         {
38             this.name = name;
39 
40             version = 1.0;
41         }
42 
43         public string GetName()
44         {
45             return name;
46         }
47     }
48 }
Net5生成测试用的dll

相关文章:

  • 2022-02-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-02
  • 2022-12-23
  • 2021-12-22
  • 2021-06-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案