[Редактировать] Чтобы сформулировать очевидное, почему бы вам не позвонить:
inspect.Close(OlInspectorClose.olDiscard);
Так как у вас уже есть инспектор?
Так выглядит C ++ (не полностью),Информация библиотеки типов показывает, что get_Inspectors возвращает список инспекторов:
virtual HRESULT __stdcall get_Inspectors (/*[out,retval]*/ struct _Inspectors * * Inspectors ) = 0;
Импортировано по:
#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE14\mso.dll" no_namespace
#import "C:\Program Files\Microsoft Office\OFFICE14\msoutl.olb" rename_namespace("Outlook")
Используя умные оболочки, доступ выглядит примерно так:
_ApplicationPtr app("Outlook.Application");
_InspectorsPtr list = app->GetInspectors();
_InspectorPtr i = list->Item(0);
i->Close(OlInspectorClose::olDiscard);
Обратите внимание, что я передаю целочисленный индекс в функцию Item.В оболочке C # объявление интерфейса выглядит следующим образом:
[DispId(282)]
Inspectors _Application.Inspectors { [DispId(282)] get;
Этот индексатор реализации инспекторов выглядит следующим образом:
[DispId(0)]
Inspector this[[MarshalAs(UnmanagedType.Struct), In] object Index] { [DispId(0)] get; }
Обратите внимание, что значения индексатора объявлены объектом.Вполне возможно, что оболочка взаимодействия позволяет передавать Inspector, а также int.Фактически, это может показаться вероятным сценарием, если учесть, что индексатор тоже будет маршалировать как int.Исходя из вашей ошибки, я думаю, что это может быть не так.