Попытка использовать видимый COM-класс .NET через другое приложение .NET и получить исключение:
Сообщение: тип объекта должен быть
__ComObject или производный от __ComObject.
Имя параметра: o
Трассировка стека: в
System.Runtime.InteropServices.Marshal.ReleaseComObject (Объект
о)
Класс выглядит следующим образом:
[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()
, оно получает исключение, описанное выше.
Есть идеи для решения этой проблемы?
EDIT:
К сожалению, я не могу предоставить код клиентского приложения для создания экземпляра моего объекта. Однако я знаю, что клиент использует тот же метод для создания реальных объектов COM.