Потеря UserProperties TaskRequestItem при его передаче в приложение Outlook (VSTO Addin) - PullRequest
1 голос
/ 23 октября 2019

Я создаю TaskRequestItem через .NET Outlook Interop API и добавляю свой собственный UserProperty. (Я использую уже запущенный экземпляр Outlook) В конце я отображаю элемент в Outlook, и 1-й процесс завершен.

В моем Outlook работает надстройка VSTO, которая прослушивает событие ItemSend. Если теперь я отправляю TaskRequestItem в Outlook, я не могу найти в Event ItemSend на элементе какие-либо UserProperties!

Я также пытался использовать ItemProperties и PropertyAccessor. Та же проблема, все свойства исчезли!

Если я попробую это с MailItem, то это сработает!

Сначала добавляются свойства, потому что я могу прочитать их сразу после добавления в 1-йшаг ...

Часть 1 для создания нового элемента с интерфейсом API:

Microsoft.Office.Interop.Outlook.Application outlook = Marshal.GetActiveObject("Outlook.Application") as OutlookApplication;

...

TaskItem item = outlook.CreateItem(OlItemType.olTaskItem);
var task = item.Assign();
var guid = Guid.NewGuid().ToString();
var userProperty = item.UserProperties.Add("My GUID", OlUserPropertyType.olText, true);
userProperty.Value = guid;
task.Save();
task.Display();

...

Часть 2 ItemSend в VSTO Addin

private void MyAddIn_ItemSend(object item, ref bool cancel)

...

var oItm = item as TaskRequestItem;
foreach (UserProperty property in oItm.UserProperties)
{
    if (property.Name == "My GUID")
    {
        Console.WriteLine("My GUID: " + property.Value);
    }
}

1 Ответ

0 голосов
/ 23 октября 2019

Само задание никогда не отправляется - оно остается в папке «Задачи» со всеми неповрежденными свойствами пользователя. Отправляется объект TaskRequestItem, отличный от исходного объекта lask. Вы можете вызвать TaskRequestItem.GetAssociatedTask, чтобы получить исходный объект Task и скопировать ваши пользовательские свойства.

...