Я использую интерфейс Outlook com для автоматизации создания электронных писем. Я пытаюсь обработать событие MailItem.Close
, но проблема в том, что MailItem также имеет метод MailItem.Close()
. Я надеялся, что компилятор сделает вывод, что я имел в виду событие, так как я пытался присоединить к нему делегата, однако это не так.Outlook COM Interop метод имя события конфликт
private void editButton_Click(object sender, RoutedEventArgs e)
{
outlook.MailItem editItem;
...
editItem.Close += delegate { editItem_onClose(editItem); };
...
}
Фактическая ошибка:
Error 4 Cannot assign to 'Close' because it is a 'method group'
и предупреждение:
Warning 3 Ambiguity between method 'Microsoft.Office.Interop.Outlook._MailItem.Close(Microsoft.Office.Interop.Outlook.OlInspectorClose)' and non-method 'Microsoft.Office.Interop.Outlook.ItemEvents_10_Event.Close'. Using method group.
EDIT:
мой Microsoft.Office.Interop.Outlook
NameSpace не имеет интерфейс ItemEvents_10_Event
. У меня есть outlook.ItemEvents_10_SinkHelper
и outlook.ItemEvents_10
я пытался бросить в outlook.ItemEvents_10
так:
var events = (outlook.ItemEvents_10)editItem;
events.Close += delegate { editItem_AfterWrite(editItem, editRow); };
, но я все еще получаю «events.Close является групповой метод» ошибка.
Перед тем, как добавить обработчик, переместите 'editItem' в' ItemEvents_10_Event'? – GSerg
Как вы ссылаетесь на взаимодействие COM и как вы проверяете, что интерфейс 'ItemEvents_10_Event' не существует? [Мероприятие должно быть там] (http://i.stack.imgur.com/Hx8yo.png). У вас есть псевдоним 'using outlook = ...' в верхней части вашего файла, нижний регистр 'o' в' outlook.ItemEvents_10' очень странный. –
Я добавил ссылку на «Microsoft Outlook 15.0 Object Library Version 9.5» с помощью диалогового окна ссылки VisualStudio. как я набираю «ItemEvents_10 ...», IntelliSense выводит все возможные варианты, которые заканчивают мое текущее утверждение, и есть только два, два, о которых я говорил. Есть ли способ сделать это? –