3 Stimmen

Übergabe des Typs an eine Funktion in VB.NET

Ich erhalte einen Kompilierfehler Typ "ctltype" ist nicht mit diesem Code definiert.

Dies ist .NET 1.1 Legacy-Code so nicht gut ich weiß.

Weiß jemand, warum?

Public Function GetControlText(ByVal ctls As Control, ByVal ctlname As String, ByVal ctltype As Type) As String

        Dim ctl As Control
        Dim res As String

        ctl = ctls.FindControl(ctlname)
        If ctl Is Nothing Then
            Return ""
        End If

        res = CType(ctl, ctltype).Text

        If res Is Nothing Then
            Return ""
        Else
            Return res
        End If

    End Function

2voto

Jon Skeet Punkte 1325502

Der zweite Operand für CType muss ein Typname sein - nicht eine Variable vom Typ Type . Mit anderen Worten: Der Typ muss zur Kompilierzeit bekannt sein.

In diesem Fall ist alles, was Sie wollen, die Text Eigenschaft - und die kann man mit Reflexion erreichen:

Public Function GetControlText(ByVal ctls As Control, ByVal ctlname As String, _
                               ByVal ctltype As Type) As String

    Dim ctl As Control = ctls.FindControl(ctlname)
    If ctl Is Nothing Then
        Return ""
    End If

    Dim propInfo As PropertyInfo = ctl.GetType().GetProperty("Text")
    If propInfo Is Nothing Then
        Return ""
    End If

    Dim res As String = propInfo.GetValue(propInfo, Nothing)
    If res Is Nothing Then
        Return ""
    End If
    Return res

End Function

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X