UserPrincipal ExtensionSet不适用于多值属性

时间:2015-08-10 08:18:10

标签: c#

我正在扩展UserPrincipal(https://msdn.microsoft.com/en-us/library/bb384372(VS.90).aspx)以获取它未提供的属性。它对公司,部门和其他人的价值观很有用,但我发现ProxyAddresses存在问题。它不起作用。 我已经尝试过HomePhoneOther的精确副本,但它也没有用。 我发现只有当集合只包含一个元素时才会起作用,否则会保留旧值并为它们添加新值。

有没有人遇到同样的问题?目前我不知道如果我有一个以上的值,如何设置HomePhoneOther。

感谢。

1 个答案:

答案 0 :(得分: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:jdoe@hotmail.com";
s[1] = "smtp:john.doe@hotmail.com";
user.ProxyAddresses = null;
user.Save();
user.ProxyAddresses = s;
user.Save();