Type.InvokeMember - DISP_E_MEMBERNOTFOUND

Type.InvokeMember - DISP_E_MEMBERNOTFOUND

Type.InvokeMember 失败并出现错误找不到成员 DISP_E_MEMBERNOTFOUND 尽管该成员肯定在那里。

VB 脚本编写者熟悉的 Microsoft Scripting Runtime 有一个词典 class 但我无法 运行 一个简单的后期绑定调用。这里是麦克雷。我还没有开始整理 return 参数。

    static void Main(string[] args)
    {
        Type type = Type.GetTypeFromProgID("Scripting.Dictionary");
        Object com_obj = Activator.CreateInstance(type);

        Object[] countArgs = new Object[1];
        string msg;
        BindingFlags invokeAttr = BindingFlags.InvokeMethod;
        try
        {

            type.InvokeMember("Count", invokeAttr, null, com_obj, null);
        }

        catch (Exception ex)
        {
            msg = ex.Message + ":" + ex.InnerException.Message;
            Debug.WriteLine(msg);
        }


        Console.ReadKey();
    }

请尝试使用 BindingFlags invokeAttr = BindingFlags.GetProperty;。 或者,您可以使用 C#s 动态将不可读代码减少到最低限度。

Type type = Type.GetTypeFromProgID("Scripting.Dictionary");
dynamic com_obj = Activator.CreateInstance(type);
var count = com_obj.Count;