尝试通过其他 .NET 应用程序使用 COM 可见 .NET 类并获得异常:
消息:对象的类型必须是 __ComObject 或派生自 __ComObject。
参数名称:o
堆栈跟踪:在 System.Runtime.InteropServices.Marshal.ReleaseComObject(Object 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 对象。