调用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);
分享到:
相关推荐
3. **错误处理**:P/Invoke调用可能会出现错误,比如找不到DLL或函数,这时可以使用`[DllImport]`的`SetLastError`和`ThrowOnUnmappableChar`属性来处理错误。 对于COM服务器,情况有所不同。COM服务器通常包含一组...
标题中的"C#动态调用DLL"指的是在C#编程环境中,如何在运行时动态地加载和调用外部的DLL(动态链接库)文件。DLL是Windows操作系统中的一种共享库,它包含可由多个应用程序共享的代码和数据,有助于减少磁盘和内存的...
4. 调用方法:`var objStr = type.InvokeMember("ToString", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static, null, frankJob, null);` 以及 `var email = type....
5. **处理异常与资源释放**:在调用DLL方法后,记得捕获可能出现的异常,并确保正确关闭任何打开的资源,如数据库连接。这可以通过`try-catch-finally`块实现。 6. **单个打印**:对于单个打印任务,只需要提供相应...
桌面显示C#源代码 Type shellType = Type.GetTypeFromProgID("Shell.Application");... shellType.InvokeMember("ToggleDesktop", System.Reflection.BindingFlags.InvokeMethod, null, shellObject, null);
要调用方法,我们首先需要获取目标类型对应的`Type`对象,这可以通过`typeof()`运算符或`Activator.CreateInstance()`方法来完成。 在给定的示例中,我们看到以下代码片段用于调用静态方法: ```csharp Type t = ...
使用`Type.InvokeMember`方法可以调用类型成员,例如: ```csharp // 假设有一个Test类,并有一个SayHello方法 Type type = typeof(Test); object instance = Activator.CreateInstance(type); type.InvokeMember(...
这里使用`InvokeMember`方法调用金蝶登录组件的`CheckLogin`方法,并根据返回值判断登录是否成功。如果登录成功,则调用`InitialLoginDatas`方法初始化登录数据。 ##### 3. 初始化登录数据 ```csharp private void...
6. **异常处理**:由于是跨语言调用,可能会遇到类型不匹配、权限不足等问题,因此需要适当的异常处理机制,捕获并处理可能出现的错误。 7. **示例代码**: ```csharp using System; using System.Runtime....
Document doc = (Document)docsType.InvokeMember("Open", BindingFlags.InvokeMethod, null, docs, new Object[] { (object)path, true, true }); Type docType = doc.GetType(); docType.InvokeMember("SaveAs...
Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new object[] { path, true, true }); // 获取文档类型 Type docType = doc....
通过`System.Activator.CreateInstance`和`System.Type.InvokeMember`方法,可以在C#中实例化并调用JScript引擎来执行JS代码。 3. **Edge.js (ChakraCore)**: Edge.js是一个开源库,它允许.NET应用程序直接运行...
为了打开特定的Word文档,我们需要获取`Documents`集合,并使用`InvokeMember`方法调用`Open`函数: ```csharp Documents docs = word.Documents; object objDocName = @"c:\test.doc"; Document doc = (Document)...
这里使用的是`InvokeMember`方法来调用Excel对象模型中的方法或属性,这是通过反射实现的。 ##### 5. 操作工作表 ```csharp object objWorkSheet = null; parameters = new object[1]; parameters[0] = 1; ...
在C#.NET中,动态调用Web Service是一个高级技巧,主要适用于那些在程序运行时需要与未知服务交互的情况。以下将详细介绍三种动态调用Web Service的方法: 1. **使用System.Web.Services.Description命名空间** 当...
JSFunction := WebBrowser1.Document.InvokeMember('callFromDelphi', [VarAsType('Hello from Delphi!', varOleStr)]); end; ``` 4. **HTML元素交互**:通过TWebBrowser的Document属性,你可以访问HTML文档的...
当我们需要在VC++程序中操作Excel文件时,OLE自动化是一种常用的方法。本篇将详细介绍如何利用VC++ MFC的OLE方式读写Excel 2003文件,并探讨相对于ODBC方式的优势。 首先,理解OLE自动化。OLE自动化允许一个应用...
.NET框架与Python的集成使得开发者可以利用Python的强大功能来扩展.NET应用,特别是在处理特定任务如串口通信时。本文将详细介绍如何使用.NET调用Python脚本来实现串口通信,并探讨涉及的关键技术点。 首先,我们要...
在页面加载事件`Page_Load`中,你可以调用这个类的方法来执行转换过程: ```csharp protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string ServerPath = Server.MapPath("~"); ...