Я разрабатываю приложение, которое может работать с MS-ADSL-службой. В настоящее время можно создавать записи-каталоги и присваивать значения некоторым свойствам. До сих пор не очень интересная задача:
Im мое приложение может (должно быть) настроить, какие свойства класса (например: класс CN = Person) должны быть назначены значениями, которые оцениваются во время выполнения в моем приложении.
Короче говоря: я хочу получить все (записываемые) свойства класса. Без создания и сохранения нового CN = Person-Object раньше.
В настоящее время я использую свой schemaBinding, чтобы получить Class-ClassSchema-Entry класса Person (класс CN = Person), откуда я прочитал некоторые значения свойств (например, "AllowedAttributesEffective", "mayContain", "AllowedAttributes") - я получаю максимум свойства этим способом - но некоторые свойства отсутствуют! Например, "phoneNumber" -Property (атрибутSchema: CN = Telephone-Number)
Кто-нибудь знает, как получить эти свойства класса? ADSI-Edit делает это: когда я создаю новый объект с помощью adsi-edit, я могу назначить значения всем возможным свойствам, прежде чем совершать новую запись.
Большое спасибо за любой намек!
(код.net приветствуется)
Я нашел решение для своей задачи!
Некоторые из этих свойств "вычисляются" и не сохраняются в каталоге. Таким образом, он предназначен для вызова метода RefreshCache()
и передачи необходимых имен свойств в виде массива строк.
directoryEntry.RefreshCache(new string[] { "allowedAttributesEffective",
"allowedAttributes",
"systemMayContain",
"systemMustContain" });
После этого вызова свойства имеют значения....
if (directoryEntry.Properties["systemMayContain"]).Value != null)
{
/// Success
}