Consulta Diretório ativo para obter diretamente a propriedade de email de um nome distinto?

Eu estou fazendo algumas consultas no diretório ativo no momento, nosso ID de usuário do banco de dados corresponde ao ID do usuário do diretório ativo.

Estou passando o id do usuário junto com o domínio e o caminho para conseguir o que preciso. Meu esforço é obter o endereço de e-mail do gerente do ID do usuário passado. O que estou retornando quando obtenho a propriedade gerente é o nome distinto.

Localizando o registro do gerenciador de usuários no Active Directory

Este post acima é o meu problema exato, mas é um post antigo e não há mais descrições sobre como avançar e o OP sabia o que fazer em seguida com o nome distinto. A verdade é que não sei.

Então, minha pergunta é: como obter a propriedade de endereço de e-mail do nome distinto que até agora armazenei como uma string com um prefixo de LDAP: // + "MyDistinguishedName"?

 public string GetManagerEmail(string ActiveDirectoryPath, string ActiveDirectoryDomain, bool email)
    {

        DirectoryEntry entry = new DirectoryEntry(ActiveDirectoryPath);

        try
        {
            DirectorySearcher search = new DirectorySearcher(entry);

            search.Filter = "(SAMAccountName=" + workerID + ")";
            search.PropertiesToLoad.Add("cn");
            search.PropertiesToLoad.Add("givenname");  //firstname
            search.PropertiesToLoad.Add("sn");//surname
            search.PropertiesToLoad.Add("manager");
            search.PropertiesToLoad.Add("email");
            SearchResult result = search.FindOne();

            if (null == result)
            {
                return workerID;
            }
            if (email)
            {
                return (string)result.Properties["email"][0];
            }
            else
            {
                return (string)result.Properties["manager"][0];
                //return (string)result.Properties["manager"].IndexOf[];
            }
        }
        catch (Exception ex)
        {
            throw new Exception("Error. " + ex.Message);

        }
        finally
        {
            entry.Close();
        }
    }

Acima está o método que uso para obter os dados de que preciso. Qualquer entrada ou melhorias seria apreciada.

obrigado

ESTA É A MINHA SOLUÇÃO PARA OS QUE PODEM SER INTERESSADOS

            string domainAndUsername = ActiveDirectoryDomain + @"\" + workerID;
        DirectoryEntry manager = new DirectoryEntry(ActiveDirectoryPath);

        try
        {
            if (manager != null)
            {
                // get e-mail of manager 
                if (manager.Properties["mail"] != null && manager.Properties["mail"].Count > 0)
                {
                    string managersEMail = manager.Properties["mail"].Value.ToString();
                    return managersEMail;
                }
            }

            //No email available, use contract manager
            return string.Empty;

        }
        catch (Exception ex)
        {
            throw new Exception("Error. " + ex.Message);

        }
        finally
        {
            manager.Close();
        }

questionAnswers(1)

yourAnswerToTheQuestion