2015-08-10 2 views
0

Я расширяю UserPrincipal (https://msdn.microsoft.com/en-us/library/bb384372(VS.90).aspx), чтобы получить атрибуты, которые не предоставляются им. Он отлично подходит для таких ценностей, как компания, отдел и другие, но я нашел проблему с ProxyAddresses. Это не работает. Я пробовал точную копию для HomePhoneДругое, и он тоже не работает. Я обнаружил, что он работает только в том случае, если коллекция содержит только один элемент, иначе сохраняются старые значения и добавляются новые значения.UserPrincipal ExtensionSet не работает для многозначного атрибута

Есть ли у кого-то такая же проблема? В настоящее время я не знаю, как установить HomePhoneOther, если у меня больше одного значения.

Спасибо.

ответ

1

Я обнаружил, что сначала необходимо очистить значения, прежде чем добавлять новые.

В классе расширения:

[DirectoryProperty("ProxyAddresses")] 
public string[] ProxyAddresses 
{ 
    get 
    { 
     object[] proxysRaw = ExtensionGet("ProxyAddresses"); 
     string[] proxys = new string[proxysRaw.Length]; 

     for (int x = 0; x < proxysRaw.Length; x++) 
     { 
      proxys[x] = (string)proxysRaw[x]; 
     } 

     return proxys; 
    } 
    set 
    { 
     ExtensionSet("ProxyAddresses", value); 
    } 
} 

Очистить значения и установить новые:

string[] s = new string[2]; 
s[0] = "smtp:[email protected]"; 
s[1] = "smtp:[email protected]"; 
user.ProxyAddresses = null; 
user.Save(); 
user.ProxyAddresses = s; 
user.Save(); 
Смежные вопросы