Comment comparer la valeur de deux objets (type Object)
Bonjour,
je voudrais écrire une fonction qui compare le contenu de deux objets. Je voudrais faire quelque chose comme ça:
Code:
1 2 3 4 5 6 7 8 9 10 11
| bool AreEquals(Object left, Object right)
{
return (left == right);
}
void Test()
{
bool b1 = true;
bool b2 = true;
bool result = AreEquals(b1, b2);
} |
Le problème c'est que, dans le code ci-dessus, il compare les deux objets, et pas leur valeur. Donc result vaudra "false", alors que moi je voudrais qu'il soit "true", puisque les valeurs de b1 et de b2 sont identiques.
Alors j'ai essayé de caster mes objets de la façon suivante:
Code:
1 2 3 4
| bool AreEquals(Object left, Object right)
{
return ( (left.GetType()) left == (right.GetType()) right );
} |
Mais ça ne compile pas: cannot implicitely convert type 'System.Type' to 'bool'
Et je ne parviens pas à comprendre quel est le problème. Je ne parviens pas non plus à trouver d'autres solutions. J'ai cherché du côté de Activator.CreateInstance(), mais je ne parviens pas à l'utiliser. J'ai l'impression que c'est une mauvaise piste.
Auriez-vous des idées?
Note: La raison pour laquelle j'ai besoin de faire ceci, c'est que je récupère dynamiquement les propriétés d'instances de classes via quelque chose comme:
Code:
PropertyInfo myProperty = myObject.GetPropertiy("property name")
et j'accède ensuite à la valeur de la propriété via myProperty.GetValue() qui me renvoie un objet de type Object.