我正在尝试为 Outlook(确切地说,是 2010 年)在 .NET/C# 中开发一个插件——或者更确切地说,现在只是一个概念验证,看看我的想法是否真的可行——我面临以下问题:
插件应该提供一个新的自定义文件夹(在层次结构的顶层,即在所有其他主要项目旁边,如任务、日历、联系人等),在其中向用户提供项目。所以我认为在 AddIn 的 Startup 方法中,我可以简单地执行类似的操作
Outlook.Folder parent = inBox.Parent as Outlook.Folder;
Outlook.Folder myCustomFolder = (Outlook.Folder)parent.Folders.Add("My Custom Folder");
...这确实有效。但是,退出 Outlook 并重新启动后出现问题。由于文件夹正在被 Outlook 持久化,下次 Outlook 启动并再次初始化 AddIn 时它仍然存在,因此文件夹创建失败,因为已存在同名对象。但我看不出有什么方法可以判断这是上次的“我的”文件夹。
我不想依靠它的名称来识别文件夹(这太不可靠了,甚至无法考虑;用户可能想要重命名它,可能存在其他创建同名文件夹的插件,更不用说本地化问题等了。 ),但我还能用什么来确定自定义文件夹已经创建?
我要么必须能够以某种方式在文件夹中添加一个“标签”,以便我以后可以将其识别为“我的” - 或者需要某种唯一标识文件夹的 id(即使在启动之间保持不变) Outlook!)所以我可以通过它识别它。
我一直在查看对象的EntryID
和StoreID
字段[MAPI]Folder
,但从 MSDN 上的(可悲的是,不是很详细)描述中,我不确定我是否可以依赖它们,因为显然它们可以在某些条件下改变。
有什么建议么?