2009-07-29 6 views
3

Je reçois une erreur de compilation Le type "ctltype" n'est pas défini avec ce code.Passage du type à une fonction dans VB.NET

C'est le code hérité .NET 1.1 donc pas bon je sais.

Quelqu'un sait pourquoi?

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 
+0

oublié que vous utilisiez 1.1. Ont supprimé la réponse. – Kirtan

Répondre

2

Le deuxième opérande pour CType doit être un nom de type - pas une variable qui est de type Type. En d'autres termes, le type doit être connu au moment de la compilation.

Dans ce cas, tout ce que vous voulez est la propriété Text - et vous pouvez obtenir cela avec la réflexion:

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 
Questions connexes