98 votes

Vérifier si une propriété existe dans une classe

J'essaie de savoir si une propriété existe dans une classe, j'ai essayé ceci :

public static bool HasProperty(this object obj, string propertyName)
{
    return obj.GetType().GetProperty(propertyName) != null;
}

Je ne comprends pas pourquoi la première méthode de test ne passe pas ?

[TestMethod]
public void Test_HasProperty_True()
{
    var res = typeof(MyClass).HasProperty("Label");
    Assert.IsTrue(res);
}

[TestMethod]
public void Test_HasProperty_False()
{
    var res = typeof(MyClass).HasProperty("Lab");
    Assert.IsFalse(res);
}

0voto

C Gil Points 44

Je ne suis pas sûr du contexte dans lequel cela était nécessaire, donc il se peut que cela ne vous donne pas assez d'informations, mais c'est ce que j'ai pu faire :

if(typeof(ModelName).GetProperty("Name of Property") != null)
{
//whatevver you were wanting to do.
}

Dans mon cas, je parcours les propriétés d'une soumission de formulaire et j'ai également des valeurs par défaut à utiliser si l'entrée est laissée vide - donc j'avais besoin de savoir s'il y avait une valeur à utiliser - j'ai préfixé toutes mes valeurs par défaut dans le modèle avec Défaut donc tout ce que j'avais à faire était de vérifier s'il y avait une propriété qui commençait par ça.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X