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

您所在的位置:网站首页 如何查看dll文件中的函数是否正确 C#高级语法(反射)查找dll文件中的所有类、构造函数、参数

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

2024-02-06 08:05| 来源: 网络整理| 查看: 265

首先加载dll文件

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

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

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

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

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

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

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}"); } }

实例化类

静态实例化

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

动态实例化

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

这是调用无参构造

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

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3