J'essaie d'utiliser la réflexion pour obtenir une propriété d'une classe. Voici quelques exemples de code de ce que je vois:Pourquoi GetProperty ne parvient pas à le trouver?
using System.Reflection;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
PropertyInfo[] tmp2 = typeof(TestClass).GetProperties();
PropertyInfo test = typeof(TestClass).GetProperty(
"TestProp", BindingFlags.Public | BindingFlags.NonPublic);
}
}
public class TestClass
{
public Int32 TestProp
{
get;
set;
}
}
}
Quand je trace à travers cela, voici ce que je vois:
- Quand je vais chercher toutes les propriétés en utilisant
GetProperties()
, le tableau résultant a un entrée, pour la propriétéTestProp
. - Lorsque j'essaie d'aller chercher
TestProp
en utilisantGetProperty()
, je récupère null.
Je suis un peu perplexe; Je n'ai pas pu trouver quelque chose dans le MSDN concernant GetProperty()
pour m'expliquer ce résultat. De l'aide?
EDIT:
Si j'ajoute BindingFlags.Instance
à l'appel GetProperties()
, pas de propriétés se trouvent, période. Ceci est plus cohérent, et me conduit à croire que TestProp
n'est pas considéré comme une propriété d'instance pour une raison quelconque.
Pourquoi cela serait-il? Que dois-je faire à la classe pour que cette propriété soit considérée comme une propriété d'instance?
Si je fais ça, retourne rien aussi bien GetProperties, ce qui est cohérent , au moins. Mais la question est: que dois-je faire pour trouver la propriété avec GetProperty? Pourquoi TestProp n'est-il pas considéré comme une propriété Instance? –
... ou que dois-je faire pour classer TestClass afin que sa propriété apparaisse comme une propriété d'instance? –
Je n'ai pas pu dupliquer votre problème (bien que j'utilise VS2005, j'ai donc dû étoffer votre propriété avec une implémentation). –