最近在做AD编程方面的东西,参考了网上流传的ADHelper,貌似AD的属性赋值的方法都是有误的。
原方法类似下面这样:

 1 public static void SetProperty(DirectoryEntry de, string propertyName, string propertyValue)
 2          {
 3               if(propertyValue != string.Empty || propertyValue != "" || propertyValue != null)
 4               {
 5                    if(de.Properties.Contains(propertyName))
 6                    {
 7                        de.Properties[propertyName][0= propertyValue; 
 8                    }
 9                    else
10                    {
11                        de.Properties[propertyName].Add(propertyValue);
12                    }
13               }
14          }

但是在实际的操作中您会发现,有时候我们已经赋值过的属性需要改成空值,那用这个方法是怎么样也不会生效了。而且您也会发现,把propertyValue的空值判断去掉,也不会通过的,因为,不管存在不存在这个属性,你将这个属性直接赋值为空就会报错的。
要将属性值赋值为空值,是用移除的方法来实现的,下面的方法是经过更正的:
 1 public static void SetProperty(DirectoryEntry entry, string propertyName, string propertyValue)
 2         {
 3             if (entry.Properties.Contains(propertyName))
 4             {
 5                 if (string.IsNullOrEmpty(propertyValue))
 6                 {
 7                     object o = entry.Properties[propertyName].Value;
 8                     entry.Properties[propertyName].Remove(o);
 9                 }
10                 else
11                 {
12                     entry.Properties[propertyName][0= propertyValue;
13                 }
14             }
15             else
16             {
17                 if (!string.IsNullOrEmpty(propertyValue))
18                 {
19                     entry.Properties[propertyName].Add(propertyValue);
20                 }
21             }
22         }


posted on 2007-08-31 22:15  皮皮@北京  阅读(676)  评论(0编辑  收藏  举报