Обновление:
Эта проблема была исправлена в Погашение 5.2 :
Ранее имена MAPI назывались в "строке"пространство имен, указанное в формате DASL ... всегда предполагается, что оно имеет строковый тип (PT_UNICODE или PT_STRING8).
Теперь можно явно указать тип свойства, например PT_LONG (= 3): http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/MyIntegerUserProperty/0x00000003
Ну, разве я не чувствую себя глупым, задавая свой вопрос и затем отвечая на него ... в любом случае, вот что, похоже, происходит:
Искупление (5.1.0.0) кажется, что не понимает свойство в форме, по крайней мере, в контексте RDOItem.Fields
:
http://schemas.microsoft.com/mapi/string/{312FD430-D997-418A-8E1F-8D224FE69F5D}/MyProp/0x00000102
В качестве имени свойства он принимает все, что находится после пространства имен свойства, или MyProp/0x00000102
в этом случаеи подсказка состояла в том, что он создавал собственность со смешным именем.Я до сих пор не уверен, можно ли указывать имя (не тег) и таким образом с помощью Redemption (указатели были бы хорошими ...)
Следующее работает,хотя это немного громоздко:
RDOUtils utils = CreateUtils();
var mapiObject = rdoItem.MAPIOBJECT;
var propTag = utils.GetIDsFromNames(mapiObject,
"{312FD430-D997-418A-8E1F-8D224FE69F5D}",
"MyProp");
propTag = ((propTag >> 16) << 16) | 0x0102; // add proptype
utils.HrSetOneProp(mapiObject, propTag, byteArray);