我正在使用 c# VSTO 创建 Outlook 插件。我正在尝试将包含所有数据的日历从一组传输到另一组。这是代码
Outlook.NameSpace mapiNamespace = Application.GetNamespace("MAPI");
Outlook.CalendarModule calendarModule = (Outlook.CalendarModule)mapiNamespace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).GetExplorer().NavigationPane.Modules.GetNavigationModule(Outlook.OlNavigationModuleType.olModuleCalendar);
Outlook.NavigationGroups navGroups = calendarModule.NavigationGroups;
Outlook.NavigationGroup source = null;
Outlook.NavigationGroup dest = null;
foreach (Outlook.NavigationGroup navGroup in navGroups)
{
if (navGroup.Name == "My calendars")
source = navGroup;
else if(navGroup.Name == "Shared calendars")
dest = navGroup;
}
foreach (Outlook.NavigationFolder group in source.NavigationFolders)
{
dest.NavigationFolders.Add(group);
}
但我收到错误
"Argument 1: cannot convert from 'Microsoft.Office.Interop.Outlook.NavigationFolder' to 'Microsoft.Office.Interop.Outlook.MAPIFolder'".
如果我像这样改变线路,
dest.NavigationFolders.Add((MAPIFolder)group);
我收到错误
"System.InvalidCastException: 'Unable to cast a COM object of type "System.__ComObject" to interface type "Microsoft.Office.Interop.Outlook.Outlook.Outlook.MAPIFolder"'". The operation failed because calling QueryInterface of the COM component for the interface with IID "{00063006-0000-...-0000-C000-000000000046}" returned the following error: 'Interface not supported (HRESULT Exception: 0x80004002 (E_NOINTERFACE)).'"
如何修复我的代码?或者建议另一种方法将包含所有数据的日历从一个组移动到另一个组。
换线
dest.NavigationFolders.Add(group);
到
dest.NavigationFolders.Add(group.Folder);