首页 / C# / C#动态使用DLL函数
C#动态使用DLL函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#动态使用DLL函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1858字,纯文字阅读大概需要3分钟。
内容图文
![C#动态使用DLL函数](/upload/InfoBanner/zyjiaocheng/684/df15d3ca356942958579bb483d7fc195.jpg)
我有两个文件夹,一个包含文件的文件夹,另一个包含DLL文件的文件夹,我不知道DLL文件目录(模块化使用)中有哪个或多少个DLL.
每个DLL文件中都有一个将FileInfo作为参数的函数.
我如何在files目录中的每个文件上的DLL中运行所有功能?
例如,以下DLL文件之一:
using System;
using System.IO;
namespace DLLTest
{
public class DLLTestClass
{
public bool DLLTestFunction(FileInfo file)
{
return file.Exists;
}
}
}
主要:
DirectoryInfo filesDir = new DirectoryInfo(path_to_files_Directory);
DirectoryInfo dllsDir = new DirectoryInfo(path_to_dlls_Directory);
foreach(FileInfo file in filesDir.getFiles())
{
//How do I run each one of the dll funtions on each one of the files?
}
非常感谢.
解决方法:
C#是静态类型的语言,因此,如果要从许多程序集中调用特定函数,则第一步是使用该函数的接口定义一个项目.
您必须使用一个接口创建一个项目(称为ModuleInterface或其他任何项目):
public interface IDllTest
{
bool DLLTestFunction(FileInfo file);
}
然后,您所有的Dll项目都必须至少具有一个实现此接口的类:
public class DLLTestClass : IDllTest
{
public bool DLLTestFunction(FileInfo file)
{
return file.Exists;
}
}
注意上面IDllTest的实现(您必须添加对项目ModuleInterface的引用).
最后,在您的主项目中,必须从目录加载所有程序集:
DirectoryInfo dllsDir = new DirectoryInfo(path_to_dlls_Directory);
foreach(FileInfo file in dllsDir.getFiles())
{
//Load the assembly
Assembly assembly = Assembly.LoadFile (file.FullName);
//Get class which implements the interface IDllTest
Type modules = assembly.GetTypes ().SingleOrDefault(x => x.GetInterfaces().Contains(typeof(IDllTest)));
//Instanciate
IDllTest module = (IDllTest)Activator.CreateInstance (modules);
//Call DllTestFunction (you have to define anyFileInfo)
module.DLLTestFunction(anyFileInfo);
}
它可能需要进行一些调整,因为我没有对其进行测试!
但是,我确定这是要遵循的步骤.
参考(法语):http://www.lab.csblo.fr/implementer-un-systeme-de-plugin-framework-net-c/
我希望我的英语是可以理解的,请随时纠正我.
内容总结
以上是互联网集市为您收集整理的C#动态使用DLL函数全部内容,希望文章能够帮你解决C#动态使用DLL函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。