2010-08-14 3 views
7

Y at-il un moyen que je peux obtenir le PropertyInfo pour une propriété de son getter? Comme ceci:Est-il possible d'obtenir le PropertyInfo à partir du getter de cette propriété?

public object Foo 
{ 
    get 
    { 
     PropertyInfo propertyInfoForFoo = xxx; 
     ... 
    } 
} 

Je veux éviter d'avoir à coder en dur le nom de la propriété sous forme de chaîne, comme c'est difficile à maintenir. J'utilise .NET 2.0, donc j'espère une solution sans linq.

+0

double possible de [Comment obtenir le nom actuel de la propriété par réflexion?] (Http://stackoverflow.com/questions/1206023/how-to-get-current-property-name-via-reflection) – nawfal

Répondre

5

MethodBase.GetCurrentMethod() retournera l'objet MethodInfo pour get_YourPropertyName.

PropertyInfo property = GetType() 
          .GetProperty(MethodBase 
              .GetCurrentMethod() 
              .Name 
              .Substring("get_".Length) 
             ); 
0

Euh ... Alors, comment envisagiez-vous d'être "donné" au getter?

La seule façon que je vois est par quelque chose comme MyGetProperyInfo(x => x.Foo);

qui peut être fait, même si elle a besoin d'un lambda & une expression <> (dont aucune est disponible en C# v2)

+0

Les Lambdas sont disponibles en C# 2, mais pas en linq. Vous n'êtes pas sûr de l'expression <>. –

+0

@JOnB: 'Expression' et tous les sous-types sont implémentés dans l'assembly System.Core et ont été ajoutés dans .NET 3.5. – Richard

Questions connexes