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);

ご覧のとおり、モジュールは 1 つしかなく、その中には関数も 1 つしかないのに、GetMethods() の呼び出しが機能しないのはなぜでしょうか? 私は VB に完全に精通しているわけではありませんが、それは静的メソッドである必要があり、モジュール内の単なるサブとして適切な方法で記述されていると思います。

4

1 に答える 1

2

GetModule() ではなく GetType() を使用する必要があることを理解しました。

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

作品:)

于 2013-10-01T22:09:40.840 に答える