C# 在运行时调用静态方法而无需构建时引用?
我正在用 C# .net (2.0) 编写一个系统。它具有可插入模块的架构。无需重建基本模块即可将组件添加到系统中。为了连接到新模块,我希望尝试按名称调用其他模块中的静态方法。我不希望在构建时以任何方式引用被调用的模块。
当我从 .dll 文件的路径开始编写非托管代码时,我会使用 LoadLibrary() 将 .dll 放入内存,然后使用 get GetProcAddress() 获取指向我希望调用的函数的指针。如何在 C# / .NET 中实现相同的结果。
I am writing a system in C# .net (2.0). It has a pluggable module sort of architecture. Assemblies can be added to the system without rebuilding the base modules. To make a connection to the new module, I wish to attempt to call a static method in some other module by name. I do not want the called module to be referenced in any manner at build time.
Back when I was writing unmanaged code starting from the path to the .dll file I would use LoadLibrary() to get the .dll into memory then use get GetProcAddress() get a pointer to the function I wished to call. How do I achieve the same result in C# / .NET.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 Assembly.LoadFrom(...) 加载程序集后,您可以通过名称获取类型并获取任何静态方法:
After the assembly is loaded using Assembly.LoadFrom(...), you can get the type by name and get any static method:
这是一个示例:
here's a sample: