Outlook COM Interop方法事件名称冲突

时间:2015-07-28 17:39:32

标签: c# events com office-interop ambiguous

我正在使用Outlook com界面自动创建电子邮件。我正在尝试处理MailItem.Close事件,但问题是MailItem还有一个MailItem.Close()方法。我希望编译器会推断出我正在引用该事件,因为我试图将一个委托附加到它,但事实并非如此。

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.

编辑:

我的Microsoft.Office.Interop.Outlook NameSpace没有ItemEvents_10_Event界面。我有outlook.ItemEvents_10_SinkHelperoutlook.ItemEvents_10我试图像outlook.ItemEvents_10那样投降:

var events = (outlook.ItemEvents_10)editItem;
events.Close += delegate { editItem_AfterWrite(editItem, editRow); };

但我仍然得到" events.Close是一个方法组"错误。

1 个答案:

答案 0 :(得分:2)

您需要将邮件项目对象强制转换为提供事件或方法的正确接口或类。 ItemEvents_10_Event接口提供Close事件,MailItem类提供Close方法。