c# - 如何在 C# 中动态加载 VB 6.0 dll?

标签 c# reflection vb6 interop

我有一个 VB 6.0 dll,它有如下方法:

Public Function PrintDemo() As Integer
PrintDemo = 10
End Function

dll 已在我的机器上注册。我需要将这个 dll 动态加载到 C# 中。以下是我在 C# 中尝试的方式:

Type obj = Type.GetTypeFromProgID("Project1.Class1");
object ins = Activator.CreateInstance(obj);

var method1 = obj.InvokeMember("PrintDemo", BindingFlags.InvokeMethod, null, obj, null);
Console.WriteLine(method1);

dll 已成功加载,但我无法调用它。

有人可以帮我解决这个问题吗?

最佳答案

努力改变

obj.InvokeMember("PrintDemo", BindingFlags.InvokeMethod, null, obj, null);

// To...
obj.InvokeMember("PrintDemo", BindingFlags.InvokeMethod, null, ins, null);

我相信您应该发送实例“ins”作为目标而不是类型。 否则就没有理由创建一个实例。

我已经有很长时间没有使用反射了......

关于c# - 如何在 C# 中动态加载 VB 6.0 dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20569278/

相关文章:

c# - Pubnub 执行同步请求

c# - 有没有办法*防止* ReSharper 并行运行程序集的单元测试?

c# - 从 C# 发送 html 电子邮件

java - 如何使用Java访问另一个类的私有(private)字段中的私有(private)字段

c# - 在运行时动态调用 Moq Setup()

java - 如何使用反射从外部 JAR 文件检索一些资源

c# - 将 VB6 类型转换为 C# 结构

c# - 资源争用 - 并不总是使用锁?

vb6 - Visual Basic 6.0 中的多线程

error-handling - 在vb6-Closed中调用Err.Raise时,应用程序定义或对象定义的错误