我已经有一个本机代码 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
我的猜测是我必须使用 InvokeMember 或安全性来调用这些方法......
请您帮助使 c# 示例正常工作吗?
更新rename case 为 c 但这不是错。