Как удалить контакт CompleteName.Title с управляемым EWS API v1.1? - PullRequest
4 голосов
/ 10 декабря 2011

Используя EWS управляемый API v1.1, я могу успешно сохранить / установить для контакта "Title" или honifific (если вы предпочитаете) непустое значение, но я не могу понять, как удалить или установить его обратнов пустую строку / null.

Я пытался установить пустое значение и Я пытался удалить расширенное свойство.Вот соответствующий код.

var titleDef = new ExtendedPropertyDefinition(0x3A45, MapiPropertyType.String);

// works when set to a non-empty string value
ewsContact.SetExtendedProperty(titleDef, "Mr.");

// throws null argument exception when set to String.Empty or null
ewsContact.SetExtendedProperty(propDefinition, String.Empty);

// isRemoved is equal to false and the value doesn't change
var isRemoved = ewsContact.RemoveExtendedProperty(titleDef);

Я также пытался использовать другую перегрузку для ExtendedPropertyDefinition, как упомянуто в этот очень похожий вопрос , но это не изменило мой конечный результатдля удаления собственности.Я не уверен, что понимаю разницу в двух сигнатурах конструктора.

var titleDef = new ExtendedPropertyDefinition(new Guid("{00062004-0000-0000-C000-000000000046}"), 0x3A45, MapiPropertyType.String);

// isRemoved is equal to false and the value doesn't change
var isRemoved = ewsContact.RemoveExtendedProperty(titleDef);

Обход грубой силы

Полагаю, я мог бы взять полнуюскопируйте контакт (без заголовка) и удалите оригинал, но это кажется слишком сложным и, вероятно, приведет к другим ошибкам.

1 Ответ

5 голосов
/ 12 декабря 2011

EWS позволяет назначать Расширенные свойства без их предварительного связывания.Однако, чтобы удалить Расширенное свойство - вам нужно включить его в свой начальный обязательный вызов PropertySet.Следующее сработало для меня ...

 var titleDef = new ExtendedPropertyDefinition(0x3A45, MapiPropertyType.String);
 Contact contact = Contact.Bind(service, id, new PropertySet(titleDef));
 contact.RemoveExtendedProperty(titleDef);
 contact.Update(ConflictResolutionMode.AutoResolve);

Также странно, что вы можете получить Заголовок как свойство первого класса, но вы не можете назначить его (, так какэто сложный тип ).Они могли бы сделать это проще для нас.

var title = contact.CompleteName.Title;  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...