既にネイティブ コードの 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-type をインスタンス化しようとすると、次のようになります。
NotImplementedException
execption は次の行でスローされます。
dynamic c = app.Case;
この行にブレークポイントを設定したので、「アプリ」を調べたところ、エラーは既に存在していました
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# の例を機能させるのを手伝ってくれませんか?
名前の変更ケースを c に更新しましたが、それは問題ではありませんでした。