【发布时间】:2015-07-03 21:25:06
【问题描述】:
我已经有一个本机代码 COM 对象,并且正在尝试从 C# 实例化它。 Com 在 DCOM 组件和注册表中注册。
这是我尝试做的:
public static void Main(string[] args)
{
Type t = Type.GetTypeFromProgID("CaseConsole.Application");
dynamic app = Activator.CreateInstance(t);
dynamic c = app.Case;
c.OpenCase("17-16", 0);
}
如果我尝试实例化 com 类型,我会得到:
NotImplementedException
execption 在以下行抛出:
dynamic c = app.Case;
当我在这一行设置断点时,我查看了“app”并且错误已经存在
我查看了 Type t,它显示:IsCOMObject = true
作为 VBS 效果很好:
Dim App
Dim c
Set App = CreateObject ("CaseConsole.Application")
Set c = App.Case
c.OpenCase "17-16", 0
像 VB.net 一样工作
Sub Main()
Dim App
Dim c
App = CreateObject("CaseConsole.Application")
c = App.Case
c.OpenCase("17-16", 0)
End Sub
但不是在 C# 中
对于 C# 示例,我查看了来自
的源代码http://www.codeproject.com/Articles/990/Understanding-Classic-COM-Interoperability-With-NE
https://msdn.microsoft.com/en-us/library/aa645736%28v=vs.71%29.aspx
Equivalent code of CreateObject in C#
我的猜测是我必须使用 InvokeMember 或安全性来调用方法...
请您帮助使 c# 示例正常工作吗?
更新将大小写重命名为 c 但这不是问题。
【问题讨论】:
-
dynamic没问题?
标签: c# com createobject