我有一个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已成功加载,但我无法调用它。
有人可以帮我吗?
答案 0 :(得分:3)
尝试更改
obj.InvokeMember("PrintDemo", BindingFlags.InvokeMethod, null, obj, null);
// To...
obj.InvokeMember("PrintDemo", BindingFlags.InvokeMethod, null, ins, null);
我相信你应该将实例'ins'作为目标发送而不是Type。 否则就没有理由创建实例。
自从我参与反思以来,已经很久了......