2010-03-12 5 views
1

Existe-t-il un moyen pour une propriété d'accéder à son propre nom et de le taper lors de l'exécution à l'aide de la réflexion? Je veux accéder à cette information sans coder en dur le nom ou l'index de la propriété dans la classe.Comment une propriété peut-elle résoudre son propre nom et type avec réflexion?

simple Exemple de code:

Private ReadOnly Property MyProperyName() As String 
    Get 
     Console.WriteLine((Get Current Property Info).Type.ToString) 
     Console.WriteLine((Get Current Property Info).Name) 
     Return "" 
    End Get 
End Property 

Sortie prévue:

System.String 
MyPropertyName 

Répondre

2

Vous pouvez utiliser un StackTrace pour obtenir la méthode actuelle:

Dim currentMethod = CType(new StackTrace(0, false).GetFrame(0).GetMethod(), _ 
    System.Reflection.MethodInfo) 

Si vous pouvez supposer que vous » re dans une propriété, alors vous pouvez enlever le "get_" de l'avant du nom de la méthode:

Dim propertyName as string = currentMethod.Name.SubString(4) 

Et utiliser ReturnType pour le type de propriété:

Dim propertyType as Type = currentMethod.ReturnType 
+0

Très belle Merci! –

Questions connexes