4

VB代码:

Public Module OnlyModule
    Public Sub OnlyFunction()
        'do stuff
    End Sub
End Module

C#代码:

    Assembly vbAssembly = BuildAssembly(vbCode); //wrapper function, but returns valid, compiled vb assembly
    Module module = vbAssembly.GetModules()[0];
    MethodInfo method = module.GetMethods()[0]; //returns 0 methods!!
    method.Invoke(null, null);

如您所见,其中只有一个模块和一个函数,那么为什么我对 GetMethods() 的调用不起作用?我对 VB 并不完全熟悉,但它应该是一个静态方法,而且我认为它只是作为模块内的一个子程序以正确的方式编写的。

4

1 回答 1

2

想通了,需要使用 GetType() 而不是 GetModule():

Type type = vbAssembly.GetType("OnlyModule");
Method method = type.GetMethods()[0];

作品:)

于 2013-10-01T22:09:40.840 回答