c#反射调用dll中的方法
时间: 2023-08-10 20:08:17 浏览: 127
要调用DLL中的方法,需要使用C#中的反射。以下是一个简单的示例:
首先,加载DLL文件:
```
Assembly assembly = Assembly.LoadFrom("yourDll.dll");
```
然后,获取要调用的类的Type:
```
Type type = assembly.GetType("yourNamespace.yourClass");
```
接下来,获取要调用的方法的MethodInfo:
```
MethodInfo methodInfo = type.GetMethod("yourMethod");
```
最后,使用Invoke方法调用该方法:
```
object result = methodInfo.Invoke(null, new object[] { /* 参数 */ });
```
其中,第一个参数为实例对象,由于该示例中没有实例化对象,因此传递null。第二个参数为方法的参数数组。
注意,要调用的方法必须是公共的静态方法或公共的实例方法。如果是私有方法,需要使用BindingFlags设置访问权限。
相关问题
C#中动态调用DLL
在C#中,可以使用动态调用DLL的方式来调用其中的方法。一种常见的方法是将DLL文件作为资源嵌入在C#程序中,然后通过读取该资源文件并以byte\[\]返回,再使用Assembly.Load(byte\[\])方法加载DLL中的程序集。接下来,可以使用反射来调用DLL中的方法。可以使用Invoke方法来进行对DLL中方法的调用,原理类似于Form1.cs中的Invoke方法。可以使用静态变量来保存已加载的DLL,如果已加载则不再加载,如果还未加载或者需要加载的DLL与已加载的不同,则进行加载。在C#中调用托管DLL非常简单,只需要在需要调用DLL的项目中右击"引用",选择"添加引用",然后选择已列出的DLL或通过浏览来选择DLL文件,最后需要使用using导入相关的命名空间。\[1\]\[2\]\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [C#程序实现动态调用DLL的研究](https://blog.csdn.net/weixin_30569153/article/details/95360330)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文