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

scr*_*rot 26 c# dll

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

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

Assembly testDLL = Assembly.LoadFile("C:\\dll\\test.dll");
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

Jon*_*eet 33

使用Assembly.GetTypes()获得所有类型的集合,或者Assembly.GetType(name)得到一个特定的类型.

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

同样,你可以获得方法Type.GetMethods()等.

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


Dav*_*rab 12

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

Assembly assembly = Assembly.LoadFrom("C:\\dll\\test.dll");

// Load the object
string fullTypeName = "MyNamespace.YourType";

YourType myType = assembly.CreateInstance(fullTypeName);
Run Code Online (Sandbox Code Playgroud)

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

如果你想要我只想Jon Skeet回答.