C# &引用;COM目标不实现IDispatch“;打开Outlook时出现异常。请与联系
我的代码很简单:C# &引用;COM目标不实现IDispatch“;打开Outlook时出现异常。请与联系,c#,outlook,C#,Outlook,我的代码很简单: using Outlook = Microsoft.Office.Interop.Outlook; private Outlook.ContactItem contact; private void OutlookButton_Click(object sender, RoutedEventArgs e) { try { contact = new Outlook.ContactItem((Outlook.ContactItem)((But
using Outlook = Microsoft.Office.Interop.Outlook;
private Outlook.ContactItem contact;
private void OutlookButton_Click(object sender, RoutedEventArgs e)
{
try
{
contact = new Outlook.ContactItem((Outlook.ContactItem)((Button)sender).Tag);
contact.Display();
Display()
行引发与IDispatch
相关的异常:
System.Reflection.TargetInvocationException:COM目标没有
实现IDispatch
有一个Outlook联系人对象绑定到buttons标记,其想法是当单击按钮时,它将打开以显示它们
Outlook(应用程序)未运行。上面的第一次很好,但是如果我第二次点击同一个按钮,就会引发上面的异常
如果尝试使用
NetOffice
,则会得到相同的结果。您无法使用类ctor创建Outlook项目。相反,您需要使用应用程序类的或方法
此外,Items类的Add方法可用于创建新的Outlook项目
很可能您需要更正代码:
contact = (Outlook.ContactItem)((Button)sender).Tag);
contact.Display();
无论如何,我建议将条目ID值存储在标记中。您可以在任何方便的时候使用Namespace类的方法。您不能使用类ctor创建Outlook项。相反,您需要使用应用程序类的或方法 此外,Items类的Add方法可用于创建新的Outlook项目 很可能您需要更正代码:
contact = (Outlook.ContactItem)((Button)sender).Tag);
contact.Display();
无论如何,我建议将条目ID值存储在标记中。您可以在任何方便的时候使用Namespace类的方法。我将代码修改为,以便在拉入所有联系人时,将联系人条目ID(字符串)和OutlookContact(Outlook.contact)添加到我的“OfficeContact”对象中。我有一个可以观察到的收藏。我还修改了代码,以便buttin的Tag属性绑定到EntryID。因此,现在当点击thr按钮时,我删除了可观察的集合,获得EntryID的匹配项,然后尝试显示()我的OfficeContact的Office.Contact对象-我最终出现了完全相同的错误。所以我觉得我更接近了…但是“Display()”仍然在折磨我。foreach(OfficeContact-aContact-in-main window.outlookContacts.officeContacts){if(aContact.OutlookContactEntryID==ourContactEntryID){aContact.OutlookContactObject.Display();}}我将代码修改为,这样当所有联系人都被拉入时,联系人条目ID(字符串)和OutlookContact(Outlook.contact)就会添加到我的“OfficeContact”对象中。我有一个可以观察到的收藏。我还修改了代码,以便buttin的Tag属性绑定到EntryID。因此,现在当点击thr按钮时,我删除了可观察的集合,获得EntryID的匹配项,然后尝试显示()我的OfficeContact的Office.Contact对象-我最终出现了完全相同的错误。所以我觉得我更接近了…但是“Display()”仍然在折磨我。foreach(OfficeContact-aContact-in-main window.outlookContacts.officeContacts){if(aContact.OutlookContactEntryID==ourContactEntryID){aContact.OutlookContactObject.Display();} }