加载.DLL文件并从类中访问方法?

我在这样的图书馆加载是完全新的,但这就是我的立场:

我有一个自制的DLL文件,它就像它获得的一样简单,类本身和方法。 在加载此库的主程序中,我有:

Assembly testDLL = Assembly.LoadFile("C:\\dll\\test.dll"); 

从这里开始,我有点卡住了。 据我所知,它正确加载它,因为它在我更改名称时给出了错误。

我该怎么办? 我究竟如何加载其中的类和方法?

谢谢。

使用Assembly.GetTypes()获取所有类型的集合,或使用Assembly.GetType(name)获取特定类型。

然后,您可以使用Activator.CreateInstance(type)使用无参数构造函数创建该类型的实例,或者使用Type.GetConstructors获取构造函数并调用它们来创建实例。

同样,您可以使用Type.GetMethods()等获取方法。

基本上,一旦你有了类型,你可以做很多事情 – 查看成员列表以获取更多信息。 如果您在尝试执行特定任务时遇到困难(仿制药可能很棘手),只需询问一个特定问题,我相信我们能够提供帮助。

如果你知道类型,这就是你如何获得类。

 Assembly assembly = Assembly.LoadFrom("C:\\dll\\test.dll"); // Load the object string fullTypeName = "MyNamespace.YourType"; YourType myType = assembly.CreateInstance(fullTypeName); 

完整的类型名称很重要。 由于您没有添加.dll,因此您无法进行使用,因为它不在您的项目中。

如果你想要所有我只会Jon Skeet回答。

如果要动态加载程序集,然后从其中的类调用方法,则需要执行某种forms的动态调用。

点击这里获取基本建议。

唯一缺少的是如何获取类型本身,可以通过这样的代码轻松检索:

 foreach (Type t in assemblyToScan.GetTypes()) { if(condition) //do stuff } 

如果你只是想静态地使用程序集(通过在编译时使用程序集),那么这个页面上的Launcy的答案是要走的路。