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

时间:2013-12-13 14:48:09

标签: 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已成功加载,但我无法调用它。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:3)

尝试更改

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

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

我相信你应该将实例'ins'作为目标发送而不是Type。 否则就没有理由创建实例。

自从我参与反思以来,已经很久了......