2011-12-09 11 views
4

EWS managed api v1.1を使用すると、「タイトル」の連絡先や名誉ある名前(必要に応じて)を空ではない値にセーブ/セットすることはできますが、削除する方法や空の文字列/ nullEWS managed api v1.1でCompleteName.Titleという連絡先を削除するにはどうすればよいですか?

空の値を設定しようとしました拡張プロパティを削除しようとしました。ここに関連コードがあります。

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); 

私もthis very similar questionで述べたようにExtendedPropertyDefinition上の異なるオーバーロードを使用しようとしたが、それはプロパティを除去するための私の最終結果を変更しませんでした。私は、コンストラクタの2つのシグネチャの違いを理解していません。

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); 

ブルートフォースワークアラウンド

私は(タイトルなし)連絡先の完全なコピーを取り、オリジナルを削除できたとし、それは少しトップの上にいるようだと、おそらくだろう他のバグを引き起こす。

+0

あなたは、元の[連絡先]を作成しました(http://msdn.microsoft.com/en-us/library/gg274394%28v=exchg.80%29.aspx)エントリまたはあなただけの変更でした既存ですか? – SliverNinja

+0

'ContactId()'メソッドを 'ItemId'と組み合わせて既存の連絡先を変更しています。 –

答えて

4

EWSでは、Extended Propertiesを最初にバインドせずに割り当てることができます。ただし、拡張プロパティを削除するには、最初のバインドコールPropertySetに含める必要があります。以下は、あなたがファーストクラスのプロパティとしてTitleを取得できるようにしても奇妙ですが、(それは複合型だからを)あなたはそれを割り当てることができません...私のため

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; 
+0

それはうまくいった!どうもありがとうございました。私はこの問題について私の頭をはるかに長い間叩いていました。 –

関連する問題