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并不完全熟悉,但它应该是一个静态方法,而且我认为它只是作为模块内部的子方式编写的.
最佳答案 想出来,需要使用GetType()而不是GetModule():
Type type = vbAssembly.GetType("OnlyModule");
Method method = type.GetMethods()[0];
工作:)