GetConstructor ничего не возвращает - PullRequest
0 голосов
/ 10 октября 2011

У меня есть два разных GetConstructors (), один возвращает то, что должен возвращать другой, но ничего не возвращает.

ItemName is BSRPTReportPerformanceSubcontractorRating

Первый, который возвращает то, что должен, должен:

Shared Function Invoke(ByVal Page As FXWBPage, ByVal ItemName As String, ByVal intFolderID As Integer, ByVal strItemID As String, ByVal strDummy As String) As BSRPTPrint
        Dim objPrint As BSRPTPrint

    Dim objConstructor As System.Reflection.ConstructorInfo
    Dim objType As Type
    Dim strType As String = "FXWB.BSRPT" & ItemName
    Dim types() As Type = {GetType(FXWBPage), GetType(Integer), GetType(String)}
    Dim args() As Object = {Page, intFolderID, strItemID}

    Try
        Try
            objType = Type.GetType(strType, True)
        Catch ex As Exception
            Throw New Exception("Cannot reflect type """ & strType & """. Check Request parameter ""PrintItem"", it must take the name of correspondig BSRPT class without BSRPT prefix", ex)
        End Try

        objConstructor = objType.GetConstructor(types)

        If objConstructor Is Nothing Then
            Throw New Exception("Cannot invoke type """ & objType.ToString() & """. Check constructor parameter, it must be of FXWBPage type and not passed by ref.")
        End If

        Try
            objPrint = objConstructor.Invoke(args)
        Catch exep As Exception
            Throw New Exception("Cannot load report """ & strType & """. Error: " & exep.Message)
        End Try

        Try
            objPrint.DataBind()
        Catch ex As Exception
            Throw New Exception("Error occured on data binding level. Report """ & strType & """.", ex)
        End Try

    Catch ex As Exception

        Throw ex

    End Try


    Return objPrint
End Function

Второе, которое возвращает ничего:

Shared Function Invoke(ByVal Page As FXWBPage, ByVal ItemName As String, ByVal intFolderID As Integer, ByVal intProjectID As Integer, ByVal strDummy As String, ByVal intSubcontractorID As Integer) As BSRPTPrint
    Dim objPrint As BSRPTPrint


    Dim objConstructor As System.Reflection.ConstructorInfo
    Dim objType As Type
    Dim strType As String = "FXWB.BSRPT" & ItemName
    Dim types() As Type = {GetType(FXWBPage), GetType(Integer), GetType(Integer), GetType(String), GetType(Integer)}
    Dim args() As Object = {Page, intFolderID, intProjectID, intSubcontractorID}

    Try
        Try
            objType = Type.GetType(strType, True)
        Catch ex As Exception
            Throw New Exception("Cannot reflect type """ & strType & """. Check Request parameter ""PrintItem"", it must take the name of correspondig BSRPT class without BSRPT prefix", ex)
        End Try

        objConstructor = objType.GetConstructor(types)

        If objConstructor Is Nothing Then
            Throw New Exception("Cannot invoke type """ & objType.ToString() & """. Check constructor parameter, it must be of FXWBPage type and not passed by ref.")
        End If

        Try
            objPrint = objConstructor.Invoke(args)
        Catch exep As Exception
            Throw New Exception("Cannot load report """ & strType & """. Error: " & exep.Message)
        End Try

        Try
            objPrint.DataBind()
        Catch ex As Exception
            Throw New Exception("Error occured on data binding level. Report """ & strType & """.", ex)
        End Try

    Catch ex As Exception

        Throw ex

    End Try


    Return objPrint
End Function

Может кто-нибудь помочь мне понять, почему первый работает, а второй ничего не возвращает.

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Перемещено из комментариев:

Я вижу из вашего обновленного кода, что "FXWB.BSRPT" & ItemName - это не ваш класс, а какой-то сторонний компонент, верно?Затем вам следует обратиться к документации по этому компоненту или связаться с его автором для получения информации о том, почему ваш код не работает.

0 голосов
/ 11 октября 2011

Похоже, у вас есть еще один аргумент в args (), вы проверили, что типы переменных, которые у вас есть, совпадают, и на самом деле есть конструктор, который принимает эти 4 аргумента?

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