运行时调用方法
我想知道是否可以在运行时加载 .net DLL、查看可用的方法并在运行时执行一个。
如果可能的话你能给我指出正确的方向吗
I am wondering if it is possible to load a .net DLL at runtime, view the methods available and execute one at runtime.
If this is possible could you point me in the right direction
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
通常,您使用 System.Reflection 类来完成此任务。
具体来说,您可以通过 Assembly.Load< 加载 DLL /a> (或 Assembly.LoadFrom)然后调用 Assembly.GetTypes 然后每种类型调用 Type.GetMethods。当您有 MethodInfo 时,您可以调用 MethodInfo.Invoke 就可以了。
Generally, you use System.Reflection classes to do this task.
Specifically, you'd load the DLL via Assembly.Load (or Assembly.LoadFrom) and then call Assembly.GetTypes and then for each type call Type.GetMethods. When you have a MethodInfo, you can call MethodInfo.Invoke on it.
您需要使用反射。
您可以调用
Assembly.LoadFile
加载包含 .Net 程序集的 .DLL,然后对返回的Assembly
对象调用GetTypes
方法以查看 DLL 中的类。< br>找到您感兴趣的类的
Type
对象后,您可以调用其InvokeMember
方法来调用函数。请注意,反射可能会非常慢。
You need to use Reflection.
You can call
Assembly.LoadFile
to load a .DLL containing a .Net assembly, then call theGetTypes
method on the returnedAssembly
object to look at the classes in the DLL.Once you've found a
Type
object for the class you're interested in, you can call itsInvokeMember
method to call a function.Beware that reflection can be quite slow.
是的,这是可能的,您只需从加载 dll 开始:
然后要调用 dll 内的方法,您必须使用 反射。
其中
type.FullName
是该程序集中某种类型的 FullName 属性。获得实例后,您可以像这样调用您的方法:
Yes, this is possible, you just start with loading your dll:
And then to invoke a method inside your dll you'll have to use reflection.
where
type.FullName
is the FullName property of some type in that assembly.Once you got your instance, you can invoke your method like this:
我发现这个在
反射示例
I found this at
reflection eamples