12
votes

Comment obtenir de la propriétéDescriptor pour une propriété actuelle?

Comment puis-je obtenir le PropertyDescriptor de la propriété actuelle? Par exemple: xxx


0 commentaires

4 Réponses :


0
votes

On dirige-t-il? XXX

Je pense que vous demandez si vous pouvez le faire sans la chaîne - c'est-à-dire un autre jeton qui représente "cette propriété". Je ne pense pas que cela existe. Mais puisque vous écrivez ce code quand même (?) Quelle est la difficulté de simplement mettre le nom de la propriété dans le code?


5 commentaires

Est-ce que c'est ce cas, je vais obtenir de la propriétéInfo ... mais j'ai besoin de tycleConverter, displayName de ma propriété ..


De plus, je peux obtenir manuellement tous les attributs et trouver le tyconverter, mais ce n'est pas une bonne idée


Aussi, je peux utiliser Typedescriptor.geproperties (this), puis exécuter toutes les propriétés et trouver ce dont j'ai besoin ... mais peut-être que quelque chose de buit-in était déjà mis en œuvre ... et plus rapidement que cela que j'ai écrit ..


Votre code n'est pas refactoring amical. Utilisez un Lamda au lieu d'une chaîne.


@CodeInchaos - Comment pouvez-vous faire cela à l'aide d'un Lambda? Pourriez-vous poster un exemple s'il vous plaît?



15
votes

Vous pouvez essayer ceci:

        public string Test
        {
            get
            {
                //Get properties for this
                System.ComponentModel.PropertyDescriptorCollection pdc = System.ComponentModel.TypeDescriptor.GetProperties( this );

                //Get property descriptor for current property
                System.ComponentModel.PropertyDescriptor pd = pdc[ System.Reflection.MethodBase.GetCurrentMethod().Name ];
            }
        }


1 commentaires

OU ... Nice, et je peux écrire le système.componentmodel.propertyDescriptorCollection PDC = System.componentModel.typedescriptor.geproperties (this); Dans mon constructeur à utiliser, alors une seule fois ... merci !!



5
votes

J'ai trouvé que ce qui suit a fonctionné:

        //  get property descriptions
        PropertyDescriptorCollection properties = TypeDescriptor.GetProperties ( this );

        //  get specific descriptor
        PropertyDescriptor property = properties.Find ( PropertyName, false );


0 commentaires

11
votes

Voici une fonction de conversion réutilisable pour ceux qui sont arrivés à cet article à la recherche d'une fonction générale: xxx pré>

et voici une méthode d'extension: p>

public static PropertyDescriptor PropertyDescriptor(this PropertyInfo propertyInfo)
{
  return TypeDescriptor.GetProperties(propertyInfo.DeclaringType)[propertyInfo.Name];
}


0 commentaires