Книга: C# для профессионалов. Том II
Свойства объектов пользователей
Свойства объектов пользователей
Класс DirectoryEntry
имеет некие свойства Name
, Guid
и SchemaClassName
для получения информации об объекте. Первый раз при доступе к свойству объекта DirectoryEntry
происходит связывание и заполняется кэш. Когда мы обращаемся к другому свойству, мы считываем его из кэша, и коммуникации с сервером не требуется для данных из того же объекта.
В следующем примере мы обращаемся к объекту пользователя с общим именем Christian Nagel в организационной единице Wrox Press.
DirectoryEntry de = new DirectoryEntry();
de.Path = "LDAP://celticrain/CN=Christian Nagel, " +
"OU=Wrox Press, DC=eichkogelstrasse, DC=local";
Console.WriteLine("Name: "+ de.Name);
Console.WriteLine("GUID: " + de.Guid);
Console.WriteLine("Type: " + de.SchemaClassName);
Console.WriteLine();
Объект активного каталога содержит значительно больше информации. Доступность информации зависит от типа объекта. Чтобы получить всю информацию об объекте, свойство Properties
возвращает PropertyCollection
. Каждое свойство само является коллекцией, так как одно свойство может иметь несколько значений, например, объект пользователя может иметь несколько телефонных номеров. Мы перебираем значения с помощью внутреннего цикла foreach
. Коллекция, которая возвращается из properties[name]
является массивом объектов. Значения атрибутов могут быть строками, числами или другими типами данных. Мы используем метод ToString()
для вывода значений.
Console.WriteLine("Attributes: ");
PropertyCollection properties = de.Properties;
foreach (string name in properties.PropertyNames) {
foreach (object о in properties[name]) {
Console.WriteLine(name + ": " + o.ToString());
}
}
В выходных результатах мы видим все атрибуты объекта пользователя Christian Nagel. Заметим, что otherTelephone является многозначным свойством, которое содержит несколько телефонных номеров. Некоторые из значений свойств просто выводят тип объекта System._ComObject
. Чтобы получить значения этих атрибутов, необходимо непосредственно использовать интерфейсы ADSI COM, которые также берутся из классов в пространстве имен System.DirectoryServices
.
В главе 19 можно прочитать, как работать с объектам и и интерфейсами COM.
Для получения дополнительной информации об ADSI можно прочитать книгу Simon Robinson, Professional ADSI Programming, Wrox Press, ISBN 1-861002-26-2.
Доступ к свойствам непосредственно по имени
С помощью DirectoryEntry.Properties
можно получить доступ ко всем свойствам. Если имя свойства известно, можно получить значение непосредственно:
foreach (string homePage in de.Properties["wWWHomePage"])
Console.WriteLine("Home page; " + homePage);
- Коллекции объектов
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Организация пользователей в группы с помощью ролей
- Иерархия объектов в InterBase
- Имена объектов длиной 68 символов
- Настройка учетных записей пользователей
- Новое имя базы данных пользователей
- Глава 28 Идентификация и аутентификация пользователей
- Создание объектов Collection
- Неквалифицированные действия пользователей
- 4. Свойства унарных операций
- 3. Свойства бинарных операций