`

调用Type.InvokeMember()时出现MissingMethodException

 
阅读更多

调用Type.InvokeMember()时出现MissingMethodException经常是由于缺少必要的BindingFlags引起的。

在关于Type.InvokeMember Method的地方有一大段例子代码。这段代码中有一个片断是“//Call an instance method”,其中BindingFlags用的是BindingFlags.Public | BindingFlags.InvokeMethod,即:form1.GetType().InvokeMember( "ShowDialog ", BindingFlags.Public | BindingFlags.InvokeMethod, null, form1, null);

而事实上,如果当调用Form.ShowDialog()时只使用这两个flag,程序就会报一个你们所看到的Exception。但是如果再加上 BindingFlags.Instance,问题就马上解决了:form1.GetType().InvokeMember( "ShowDialog ", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance , null, form1, null);

分享到:
评论

相关推荐

    PInvoke调用DLL.zip

    3. **错误处理**:P/Invoke调用可能会出现错误,比如找不到DLL或函数,这时可以使用`[DllImport]`的`SetLastError`和`ThrowOnUnmappableChar`属性来处理错误。 对于COM服务器,情况有所不同。COM服务器通常包含一组...

    c#动态调用DLL.pdf

    标题中的"C#动态调用DLL"指的是在C#编程环境中,如何在运行时动态地加载和调用外部的DLL(动态链接库)文件。DLL是Windows操作系统中的一种共享库,它包含可由多个应用程序共享的代码和数据,有助于减少磁盘和内存的...

    c#使用反射调用类型成员示例

    4. 调用方法:`var objStr = type.InvokeMember("ToString", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static, null, frankJob, null);` 以及 `var email = type....

    bartender 10.0 C#动态调用DLL

    5. **处理异常与资源释放**:在调用DLL方法后,记得捕获可能出现的异常,并确保正确关闭任何打开的资源,如数据库连接。这可以通过`try-catch-finally`块实现。 6. **单个打印**:对于单个打印任务,只需要提供相应...

    桌面显示C#源代码源代码.rar

    桌面显示C#源代码 Type shellType = Type.GetTypeFromProgID("Shell.Application");... shellType.InvokeMember("ToggleDesktop", System.Reflection.BindingFlags.InvokeMethod, null, shellObject, null);

    如何通过反射调用方法[参考].pdf

    要调用方法,我们首先需要获取目标类型对应的`Type`对象,这可以通过`typeof()`运算符或`Activator.CreateInstance()`方法来完成。 在给定的示例中,我们看到以下代码片段用于调用静态方法: ```csharp Type t = ...

    C#利用反射动态编译代码,创建类的实例,并调用其成员[文].pdf

    使用`Type.InvokeMember`方法可以调用类型成员,例如: ```csharp // 假设有一个Test类,并有一个SayHello方法 Type type = typeof(Test); object instance = Activator.CreateInstance(type); type.InvokeMember(...

    C#调用金蝶登录界面(反射)及使用说明

    这里使用`InvokeMember`方法调用金蝶登录组件的`CheckLogin`方法,并根据返回值判断登录是否成功。如果登录成功,则调用`InitialLoginDatas`方法初始化登录数据。 ##### 3. 初始化登录数据 ```csharp private void...

    csharp免注册调用大漠插件.zip

    6. **异常处理**:由于是跨语言调用,可能会遇到类型不匹配、权限不足等问题,因此需要适当的异常处理机制,捕获并处理可能出现的错误。 7. **示例代码**: ```csharp using System; using System.Runtime....

    Asp.Net在线预览Word文档的解决方案与思路.doc

    Document doc = (Document)docsType.InvokeMember("Open", BindingFlags.InvokeMethod, null, docs, new Object[] { (object)path, true, true }); Type docType = doc.GetType(); docType.InvokeMember("SaveAs...

    在线预览word.Excel

    Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new object[] { path, true, true }); // 获取文档类型 Type docType = doc....

    .net调用js脚本

    通过`System.Activator.CreateInstance`和`System.Type.InvokeMember`方法,可以在C#中实例化并调用JScript引擎来执行JS代码。 3. **Edge.js (ChakraCore)**: Edge.js是一个开源库,它允许.NET应用程序直接运行...

    c# word-pdf

    为了打开特定的Word文档,我们需要获取`Documents`集合,并使用`InvokeMember`方法调用`Open`函数: ```csharp Documents docs = word.Documents; object objDocName = @"c:\test.doc"; Document doc = (Document)...

    C# COM反射Excel

    这里使用的是`InvokeMember`方法来调用Excel对象模型中的方法或属性,这是通过反射实现的。 ##### 5. 操作工作表 ```csharp object objWorkSheet = null; parameters = new object[1]; parameters[0] = 1; ...

    C#.NET动态调用webservice的三种方式.doc

    在C#.NET中,动态调用Web Service是一个高级技巧,主要适用于那些在程序运行时需要与未知服务交互的情况。以下将详细介绍三种动态调用Web Service的方法: 1. **使用System.Web.Services.Description命名空间** 当...

    调用Web-js.rar

    JSFunction := WebBrowser1.Document.InvokeMember('callFromDelphi', [VarAsType('Hello from Delphi!', varOleStr)]); end; ``` 4. **HTML元素交互**:通过TWebBrowser的Document属性,你可以访问HTML文档的...

    VC OLE方式读写EXCEL

    当我们需要在VC++程序中操作Excel文件时,OLE自动化是一种常用的方法。本篇将详细介绍如何利用VC++ MFC的OLE方式读写Excel 2003文件,并探讨相对于ODBC方式的优势。 首先,理解OLE自动化。OLE自动化允许一个应用...

    .net调用Python进行串口通信

    .NET框架与Python的集成使得开发者可以利用Python的强大功能来扩展.NET应用,特别是在处理特定任务如串口通信时。本文将详细介绍如何使用.NET调用Python脚本来实现串口通信,并探讨涉及的关键技术点。 首先,我们要...

    关于在.net中嵌入Word的一些总结

    在页面加载事件`Page_Load`中,你可以调用这个类的方法来执行转换过程: ```csharp protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string ServerPath = Server.MapPath("~"); ...

Global site tag (gtag.js) - Google Analytics