VSTO: скрыть свойства контакта

Я новичок в VSTO и разрабатываю надстройку для Outlook, которая позволит конечным пользователям отслеживать отношения между контактами. Отношения хранятся в отдельной базе данных SQL, и я помещаю идентификатор строки данных SQL в пользовательское свойство, прикрепленное к контакту Outlook. К сожалению, если пользователь когда-либо просматривает панель «Все поля», этот идентификатор отображается в разделе «Определяемые пользователем поля для этого элемента». Есть ли способ запретить пользователю видеть (и, что более важно, редактировать) эти свойства?


person gillonba    schedule 12.05.2011    source источник


Ответы (1)


Я не верю, что есть какой-либо способ «прикрепить» данные к контактам OL, которые не могут быть видны пользователю.

С другой стороны, у вас может быть поле в вашей БД, которое отслеживает идентификатор контакта (я забыл точное имя поля навскидку, но я знаю, что каждый контакт имеет уникальное ключевое значение, связанное с ним), а затем использовать ЭТО при получении данных в вашей базе данных SQL.

Единственная проблема с этим подходом заключается в том, что у Outlook есть привычка сбрасывать это значение PK, когда вы делаете определенные вещи (например, перемещаете контакт из одной папки в другую, Outlook обрабатывает это как DELETE/ADD, поэтому PK для контакта изменится ).

Кажется, я припоминаю, что в какой-то момент использовал гибридный подход, который делал ОБА (сохранял PK контакта в SQL, а настраиваемое поле в контакте сохранял идентификатор SQL), а затем просто поддерживал их синхронизацию. Но, насколько я помню, было немного больно.

в качестве альтернативы, если пользователь переместил контакт, ВЫ также можете обработать его как DELETE/ADD и обновить свой SQL, если это применимо.

person DarinH    schedule 12.05.2011
comment
Спасибо! Я думаю, что поле, о котором вы думаете, это EntryID. Моей первой мыслью было сохранить это значение в собственной базе данных, но именно по этой причине я отказался от этой идеи. Какая польза от ПК, который может быть изменен без предупреждения? Другая проблема заключается в том, что я рассчитываю использовать веб-службы Exchange в отдельном модуле и не могу получить оттуда EntryID. Прямо сейчас мне интересно сохранить второе поле с теми же данными, которые хранятся в зашифрованном/хешированном формате, чтобы обнаружить подделку - person gillonba; 13.05.2011