C#高级语法(反射)查找dll文件中的所有类、构造函数、参数

  1. 首先加载dll文件

  1. 方法一:Assembly assembly = Assembly.Load("DLL文件名”); 这里路径其实是相对路径

  1. 这种方法需要将dll文件放在执行项的执行文件夹中,例如debug。或者直接引用也可。

b. 方法二:Assembly assembly = Assembly.Load("DLL文件的绝对路径”);

c. 方法三: Assembly assembly = Assembly.LoadForm(@"xxx.dll")

i. 这种方法引入相对或者绝对路径都可以

  1. 获取指定类型(就是获取dll文件的某个类)

  1. Type type = assembly.GetType("dll文件名.类名"):(这里前提知道类名)

b.如果不知道dll文件中有那些类,可以遍历获取 从而查找自己需要的类型

 foreach (var item in assembly3.GetTypes())
 {
   Console.WriteLine(item.Name);
 }
    

如果构造方式是私有的,那么就在那么就在GetConstructors(BindingFlags.instance|Bindflags.NoPublic),意思就是查找非公开或者实例化的构造方法都要找出来 默认是查找公开的 。如果不是私有 就不需要加BindingFlags.instance|Bindflags.NoPublic

foreach (var item in Typetype.GetConstructors())
            {
                Console.WriteLine("构造方法获取");
                foreach (var param in item.GetParameters())
                {
                    Console.WriteLine($"构造方法的参数{param.ParameterType}");
                }
            }
  1. 实例化类

  1. 静态实例化

  1. Reflection reflection = new Reflection(); 其中Reflection为dll文件中的类名

  1. 动态实例化

  1. object object1 = Activator.CreateInstance("Typetype");//Typetype这里是上面的类

这是调用无参构造

ii. object object2 = Activator.CreateInstance(Typetype,new object[] { "ant编程"});//调用了有参构造方法

iii. //调用私有的构造函数

object object3 = Activator.CreateInstance(Typetype, true);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值