繁体   English   中英

Type.InvokeMember-DISP_E_MEMBERNOTFOUND

[英]Type.InvokeMember - DISP_E_MEMBERNOTFOUND

Type.InvokeMember因错误而失败,尽管成员肯定在那,但找不到成员DISP_E_MEMBERNOTFOUND。

VB脚本编写者熟悉的Microsoft Scripting Runtime具有Dictionary类,但是我无法运行简单的后期绑定调用。 这是MCRE。 我还没有开始整理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#动态将不可读代码减少到最少。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM