Поиск UserPrincipal с частичным именем

Прежде чем я начну, я хочу прояснить, что я могу сделать это, используя пространство имен DirectoryServices. Я просто хочу знать, как решить свой вопрос ниже, не используя DirectoryServices.

Я пытаюсь использовать DirectoryServices.AccountManagement.UserPrincipal для частичного поиска имени учетной записи пользователя. Загвоздка в том, что я хотел бы получить следующие свойства: EmailAddress, GivenName, MiddleName, SurName и т. Д. Примечание. Все свойства, которые я ищу, все представлены в UserPrincipal. вот пример использования UserPrincipal без частичного поиска имени.

        using (UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, userName))
        {
            return user;
        }

Из прочитанных мной руководств я могу выполнить частичный поиск по имени, используя следующий код:

        using (UserPrincipal user = new UserPrincipal(ctx))
        {
            user.SamAccountName = String.Format("*{0}*", userName);

            using (PrincipalSearcher searcher = new PrincipalSearcher())
            {
                searcher.QueryFilter = user;
                return searcher.FindAll();
            }
        }

Проблема с этим в том, что когда я перебираю коллекцию PrincipalSearcher (поисковик), это Главный тип данных. И тип данных Principal не содержит ни одного из свойств, упомянутых выше.

Итак, мой вопрос: как я могу использовать UserPrincipal для частичного поиска имени и получить свойства, которые НЕ отображаются в типе данных Principal? Или это невозможно?


person HiTech    schedule 29.07.2014    source источник


Ответы (1)


Не можете ли вы преобразовать объекты Principal в объекты UserPrincipal? Может быть, ловля неверных забросов.

    return searcher.FindAll().Cast<UserPrincipal>();

Принципал кажется абстрактным базовым классом http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.principal(v=vs.110).aspx

person Pieter21    schedule 29.07.2014
comment
Разве в этом случае OfType не имеет большего смысла, чем Cast? - person NetMage; 29.07.2020