他の .NET アプリケーションを介して COM 可視 .NET クラスを使用しようとすると、例外が発生します:
メッセージ: オブジェクトの型は __ComObject であるか、__ComObject から派生している必要があります。
パラメータ名: o
スタック トレース: System.Runtime.InteropServices.Marshal.ReleaseComObject (オブジェクト o) で
クラスは次のようになります。
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IViewer : IComInteropDefinedInterface
{
}
[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
[Guid("[some guid]")]
public class MyViewer : UserControl, IViewer
{
//IViewer implementation
}
コンポーネントを次のように登録します。
regasm [Assembly Path] /tlb /codebase
同じく .NET にあるクライアント アプリケーションは、指定されたクラスを正常にインスタンス化しますが、呼び出すMarshal.ReleaseComObject()
と、上記の例外が発生します。
この問題を解決するためのアイデアはありますか?
編集: 残念ながら、オブジェクトをインスタンス化するためのクライアント アプリケーション コードを提供できません。ただし、クライアントが同じ方法を使用して実際の COM オブジェクトをインスタンス化していることはわかっています。