Votre méthode ressemble à ceci :
public static bool HasProperty(this object obj, string propertyName)
{
return obj.GetType().GetProperty(propertyName) != null;
}
Cela ajoute une extension sur object
- la classe de base de tout . Quand vous appelez cette extension, vous lui transmettez un Type
:
var res = typeof(MyClass).HasProperty("Label");
Votre méthode attend un instance d'une classe, et non d'une Type
. Sinon, vous faites essentiellement
typeof(MyClass) - this gives an instanceof `System.Type`.
Entonces
type.GetType() - this gives `System.Type`
Getproperty('xxx') - whatever you provide as xxx is unlikely to be on `System.Type`
Comme @PeterRitchie l'a correctement souligné, à ce stade, votre code recherche la propriété Label
sur System.Type
. Cette propriété n'existe pas.
La solution est soit
a) Fournir un instance de MyClass à l'extension :
var myInstance = new MyClass()
myInstance.HasProperty("Label")
b) Mettre l'extension System.Type
public static bool HasProperty(this Type obj, string propertyName)
{
return obj.GetProperty(propertyName) != null;
}
y
typeof(MyClass).HasProperty("Label");