public class DirectoryBase
    {
        protected static DirectoryEntry entry = null;

        /// <summary>
        ///
        /// </summary>
        /// <param name="entryPath"></param>
        public DirectoryBase(string entryPath)
        {
            try
            {
                entry = new DirectoryEntry(entryPath);
                entry.RefreshCache();
            }
            catch
            {
                entry = null;
            }
        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="entryPath"></param>
        /// <returns></returns>
        protected static DirectoryEntry Entry(string entryPath)
        {
            return new DirectoryEntry(entryPath);
        }

        /// <summary>
        /// 获取属性值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        protected static object PropertyValue(string propertyName)
        {
            return entry.Properties[propertyName].Value;
        }

        /// <summary>
        /// 获取属性值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        protected static object PropertyValue(DirectoryEntry objEntry, string propertyName)
        {
            return objEntry.Properties[propertyName].Value;
        }

        /// <summary>
        /// 获取索引为i的属性值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="i"></param>
        /// <returns></returns>
        protected static object PropertyValue(string propertyName, int i)
        {
            return entry.Properties[propertyName][i];
        }

        /// <summary>
        /// 获取索引为i的属性值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="i"></param>
        /// <returns></returns>
        protected static object PropertyValue(DirectoryEntry objEntry, string propertyName, int i)
        {
            return objEntry.Properties[propertyName][i];
        }

        /// <summary>
        /// 设置属性值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        protected static void PropertyValue(string propertyName, object value)
        {
            entry.Properties[propertyName][0] = value;
            entry.CommitChanges();
        }

        /// <summary>
        /// 设置属性值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        /// <param name="i"></param>
        protected static void PropertyValue(string propertyName, object value, int i)
        {
            entry.Properties[propertyName][i] = value;
            entry.CommitChanges();
        }

        /// <summary>
        /// 设置属性值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        protected static void PropertyValue(DirectoryEntry objEntry, string propertyName, object value)
        {
            objEntry.Properties[propertyName][0] = value;
            objEntry.CommitChanges();
        }

        /// <summary>
        /// 设置属性值
        /// </summary>
        /// <param name="propertyName"></param>
        /// <param name="value"></param>
        protected static void PropertyValue(DirectoryEntry objEntry, string propertyName, object value, int i)
        {
            objEntry.Properties[propertyName][i] = value;
            objEntry.CommitChanges();
        }

        /// <summary>
        /// 获取属性和
        /// </summary>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        protected static int PropertyCount(string propertyName)
        {
            return entry.Properties[propertyName].Count;
        }

        /// <summary>
        /// 获取属性和
        /// </summary>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        protected static int PropertyCount(DirectoryEntry objEntry, string propertyName)
        {
            return objEntry.Properties[propertyName].Count;
        }

        /// <summary>
        /// 对活动目录调用方法method
        /// </summary>
        /// <param name="method"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        protected static object EntryInvoke(string method, params object[] args)
        {
            return entry.Invoke(method, args);
        }

        /// <summary>
        /// 对活动目录调用方法method
        /// </summary>
        /// <param name="objEntry"></param>
        /// <param name="method"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        protected static object EntryInvoke(DirectoryEntry objEntry, string method, params object[] args)
        {
            return objEntry.Invoke(method, args);
        }

        /// <summary>
        /// 关闭对象 释放资源
        /// </summary>
        protected static void Dispose()
        {
            entry.Close();
            entry.Dispose();
        }

        /// <summary>
        /// 关闭对象 释放资源
        /// </summary>
        protected static void Dispose(DirectoryEntry objEntry)
        {
            objEntry.Close();
            objEntry.Dispose();
        }
    }

posted on 2011-04-28 13:23  wolfweb  阅读(217)  评论(0)    收藏  举报