2011-12-09 3 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의 다른 오버로드를 사용하려했지만, 그것은 속성을 제거하기위한 나의 최종 결과를 변경하지 않았다. 생성자에 대한 두 서명의 차이점을 잘 모르겠습니다.

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

"Contact.Bind()"메소드를 사용하여 기존 연락처를 수정하려고합니다. –

답변

4

EWS를 사용하면 Extended Properties에 먼저 바인딩하지 않고 할당 할 수 있습니다. 그러나 확장 속성을 제거하려면 초기 바인딩 호출 PropertySet에 포함시켜야합니다. 는

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

또한 당신이 일류 속성으로 Title를 검색 할 수 이상하다 ... 나를 위해 일한 다음,하지만 (그것이 복합 형은 이후 을) 당신은 그것을 할당 할 수 없습니다. 그들은 우리를 위해 이것을 쉽게 만들 수있었습니다.

var title = contact.CompleteName.Title; 
+0

그게 효과가! 고맙습니다. 나는이 문제에 대한 내 머리를 너무 오랫동안 두드렸다. –

관련 문제