- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我希望将一些 VB6/COM+ 代码转换为 C#/COM+
但是在 VB6 或 VB.NET 中我有:
Dim objAdmin
objAdmin = Server.CreateObject("AppAdmin.GUI")
objAdmin.ShowPortal()
在 C# 中,我似乎必须执行以下操作:
object objAdmin = null;
System.Type objAdminType = System.Type.GetTypeFromProgID("AppAdmin.GUI");
m_objAdmin = System.Activator.CreateInstance(objAdminType);
objAdminType.InvokeMember("ShowPortal", System.Reflection.BindingFlags.InvokeMethod, null, objAdmin, null);
有没有办法让 c# 不必使用 InvokeMember 函数而直接调用该函数?
最佳答案
Is there a way of getting c# to not have to use the InvokeMember function and just call the function directly?
是的,从 C# 4 开始使用 dynamic typing :
dynamic admin = Activator.CreateInstance(Type.GetTypeFromProgID("AppAdmin.GUI"));
admin.ShowPortal();
CreateObject
部分仍然更加冗长,但如果需要,您始终可以将其包装在方法调用中。 (可能是我不知道的现有调用,或者您可以尝试查找在这种情况下调用的任何 VB - 我不知道 Server.CreateObject< 的详细信息
.)
请注意,动态类型比只是更丰富地使反射更简单,但它确实做到了。在幕后,尽管这两种情况都会发生同样的事情 - 它仍然不会像静态绑定(bind)一样快,但几乎可以肯定足够快了。
关于c# - 为什么 C# CreateObject 比 VB.NET 冗长得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12319422/
当我从我的经典 ASP 页面调用 Server.CreateObject() 时,我得到 Microsoft VBScript runtime (0x800A01B6) Object doesn't
有谁知道使用以下选项的原因: Wscript.CreateObject("some.object") 和 CreateObject("some.object") 在 VBScript 中?当我找到使用
下面的 JSNI 包装器类是否做同样的事情? public final MyClass extends JavaScriptObject { // ... private static M
我尝试使用 MSXML2.serverXMLHTTP.6.0 或 WinHttp.WinHttpRequest.5.1 同时创建 100-300 个 HTTP 对象/请求。 这些请求是使用测试应用程序
如何重新实现QTextDocument.createObject? 此方法在制作QTextFrame、QTextList、QTextTable或其他QTextObject时发挥作用。 根据woboq
我想用简单的 C++ 语法创建一个简单的工厂方法: void *createObject(const char *str,...) { if(!strcmp("X",str)) retu
在 VBScript(和 VBA/VB6)中,有一个名为 CreateObject 的函数 像这样: Dim ExcelApp As Object Set ExcelApp = CreateObjec
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
有人可以建议我如何终止或绕过偶尔需要几分钟才能完成的 CreateObject 操作吗?基本上我有这段代码: Set m_Zeacom = CreateObject("QmCOM.QIntegrate
我在理解 createObject() 时遇到了一些问题函数,文档说它的使用类似于 CreateObject("component", component-name) . 在文档中,提到Coldfus
我喜欢脚本,我不喜欢重新发明轮子,所以我喜欢 CreateObject 能否请您指出一个可在 VBScript 上使用的广泛而有用的对象列表,并附上简要说明。真的,我还没有找到一个超过 50 个的网站
我想创建一个安全的 ColdFusion 环境,为此我使用了多个沙箱配置。使用友好的管理员界面可以轻松完成以下任务: 限制 CFtags,例如:cfexecute、cfregistry 和 cfhtt
我有这个 VBScript 它工作正常,脚本没有问题,但我想在 Chrome 而不是 IE 中打开它。 我对 VB 脚本非常陌生。 有人可以帮帮我吗。 WScript.Quit Main Functi
我有一个 VB.NET 应用程序,它使用 CreateObject 来使用 Excel 并将大量数据转储到其中。我们遇到了内存不足的异常,此时我们的应用程序通常会达到 1GB 内存。但我无法将所有数字
我正在用经典的 ASP(在 Windows CE 上)编写一个导航系统。我需要一种基于调用脚本动态包含导航文件的方法。我想出了以下代码,其中包含位于调用脚本文件夹中的 nav.inc,以允许不同的文件
我正在使用 HtmlPage.RegisterCreateableType从javascript调用一些C#代码的方法。在 MSDN 文档中,他们说: Registers a managed type
我有一个包含以下代码的 .cfm 文件: #a.hello()# #testJava()# 这引用了一个 Java 类文件: public class Test {
当我在 NS-3(网络模拟器)中查看不同的示例时,我遇到了这样的定义。我不明白这个语法到底是什么意思。 Ptr a = CreateObject (); 在其他一些情况下,它们使用类似的语法,但
早上好。我在这个论坛和互联网上阅读了很多类似的主题,但我没有找到解决我的问题的方法。 我只是想用 C++ 转换这些 VB 行: Dim OR As Object Dim info as String
有谁知道在使用 WScript.CreateObject 时使用前缀的实际目的? 我有一个 C++ COM 项目示例,它有一个调用 C++ dll 项目中 COM 对象方法的 VB 脚本文件。 Fun
我是一名优秀的程序员,十分优秀!