Я пытаюсь разработать AddIn - или, точнее, пока просто концептуальное доказательство, чтобы увидеть, возможно ли то, что я имею в виду, вообще возможно - для Outlook (если быть точным, 2010), в. NET / C #, и я столкнулся со следующей проблемой:
Предполагается, что надстройка предлагает новую пользовательскую папку (на верхнем уровне иерархии, то есть рядом со всеми другими основными элементами, такими как задачи, календарь, контакты и т. Д.), В которой можно предлагать элементы пользователю. Поэтому я решил, что в методе запуска AddIn я мог бы просто сделать что-то вроде
Outlook.Folder parent = inBox.Parent as Outlook.Folder;
Outlook.Folder myCustomFolder = (Outlook.Folder)parent.Folders.Add("My Custom Folder");
... и это на самом деле работает. Однако после выхода из Outlook и его повторного запуска возникает проблема. Поскольку папка сохраняется в Outlook, она все еще там, когда Outlook снова запустит и инициализирует AddIn, поэтому создание папки завершится неудачно, поскольку объект с таким именем уже существует. Но я никак не могу понять, что это «моя» папка с прошлого раза.
Я не хочу полагаться на ее имя для идентификации папки (это слишком ненадежно даже для рассмотрения; пользователи могут захотеть переименовать ее, могут существовать другие надстройки, создающие папку с той же самой имя, не говоря уже о проблемах локализации и т. д.), но что еще я могу использовать, чтобы определить, что пользовательская папка уже создана?
Мне нужно было бы либо каким-либо образом добавить «тег» в папку, чтобы позже я мог распознать его как «мой», либо, в качестве альтернативы, потребовался бы некоторый идентификатор, который однозначно идентифицирует папку (и который остается постоянным даже между запусками Outlook!), чтобы я мог это узнать.
Я просматривал поля EntryID
и StoreID
объекта [MAPI]Folder
, но из (к сожалению, не очень подробного) описания в MSDN я не уверен, могу ли я положиться на них потому что, по-видимому, они могут измениться при определенных условиях.
Есть предложения?