Возврат нескольких значений из вызова функции - PullRequest
0 голосов
/ 01 апреля 2010

У меня есть функция поиска в активном каталоге:

    Function GetAdInfo(ByVal ADDN As String, ByVal ADCommonName As String, ByVal ADGivenName As String, ByVal ADStaffNum As String, ByVal ADEmail As String, ByVal ADDescription As String, ByVal ADTelephone As String, ByVal ADOffice As String, ByVal ADEmployeeID As String) As String
        Dim netBIOSname As String = Me.Request.LogonUserIdentity.Name
        Dim sAMAccountName As String = netBIOSname.Substring(netBIOSname.LastIndexOf("\"c) + 1)
        Dim defaultNamingContext As String
        Using rootDSE As DirectoryServices.DirectoryEntry = New DirectoryServices.DirectoryEntry("LDAP://RootDSE")
            defaultNamingContext = rootDSE.Properties("defaultNamingContext").Value.ToString()
        End Using
        Using searchRoot As DirectoryServices.DirectoryEntry = _
                            New DirectoryServices.DirectoryEntry("LDAP://" + defaultNamingContext, _
                                "kingkong", "kingkong", DirectoryServices.AuthenticationTypes.Secure)
            Using ds As DirectoryServices.DirectorySearcher = New DirectoryServices.DirectorySearcher(searchRoot)
                ds.Filter = String.Format("(&(objectClass=user)(objectCategory=person)(sAMAccountName={0}))", sAMAccountName)
                Dim sr As DirectoryServices.SearchResult = ds.FindOne()

                ADDN = (sr.Properties("displayName")(0).ToString())
                ADCommonName = (sr.Properties("cn")(0).ToString())
                ADGivenName = (sr.Properties("givenname")(0).ToString())
                ADStaffNum = (sr.Properties("sn")(0).ToString())
                ADEmail = (sr.Properties("mail")(0).ToString())
                ADDescription = (sr.Properties("description")(0).ToString())
                ADTelephone = (sr.Properties("telephonenumber")(0).ToString())
                ADOffice = (sr.Properties("physicalDeliveryOfficeName")(0).ToString())

            End Using
        End Using
        Return ADDN
        Return ADCommonName
        Return ADGivenName
        Return ADStaffNum
        Return ADEmail
        Return ADDescription
        Return ADTelephone
        Return ADOffice

Кажется, что функция работает, так как когда я ставлю точку останова в конце, переменные, такие как ADDN, имеют правильные значения.

Затем я вызываю функцию в моей page_load так:

GetAdInfo(ADDN, ADCommonName, ADGivenName, ADStaffnum, ADEmail, ADDescription, ADTelephone, ADOffice, ADEmployeeID)

Затем я пытаюсь ответить. Запишите одну из переменных для проверки следующим образом:

Response.Write(ADDN) 

Но значение пустое.

Пожалуйста, кто-нибудь может сказать мне, что я делаю неправильно. Спасибо

1 Ответ

3 голосов
/ 01 апреля 2010

Вы можете вернуть только одно значение из функции - вы можете передать их по ссылке, и они должны вернуться с правильными значениями, но для меня, я думаю, вам лучше создать небольшой класс с нужными вам свойствами возвращается и возвращает экземпляр этого класса из этого метода, заполненный возвращенными переменными - это означает, что у вас будет меньше проблем с изменением этого метода, если вам нужно будет добавить больше возвращаемых значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...