Если вам нужно прочитать атрибут, который класс UserPrincipal
не предоставляет, тогда вам нужно использовать GetUnderlyingObject()
, чтобы использовать базовый объект DirectoryEntry
(то есть, что UserPrincipal
используется в фоновом режиме. Это одна из причин, по которой я больше не беспокоюсь о UserPrincipal
.
Атрибуты AD, которые вы ищете: company
и physicalDeliveryOfficeName
. Предполагая, что у вас есть UserPrincipal
объект с именем user
, вы должны сделать это следующим образом:
var underlyingObject = (DirectoryEntry) user.GetUnderlyingObject();
var company = underlyingObject.Properties.Contains("company") ?
(string) underlyingObject.Properties["company"].Value :
null;
var office = underlyingObject.Properties.Contains("physicalDeliveryOfficeName") ?
(string) underlyingObject.Properties["physicalDeliveryOfficeName"].Value :
null;
Вы используете Contains
, чтобы убедиться, что атрибут находится в коллекции. атрибут пустой, он вообще не будет отображаться в коллекции Properties
.