Voici un test simple qui illustre le problème :
class MyBase { public int Foo { get; set; } }
class MyClass : MyBase { }
[TestMethod]
public void TestPropertyCompare()
{
var prop1 = typeof(MyBase).GetProperty("Foo");
var prop2 = typeof(MyClass).GetProperty("Foo");
Assert.IsTrue(prop1 == prop2); // fails
//Assert.IsTrue(prop1.Equals(prop2)); // also fails
}
J'ai besoin d'une méthode de comparaison qui déterminera que ces deux propriétés représentent en fait la même propriété. Quelle est la bonne façon de procéder ?
En particulier, je veux vérifier que la propriété provient bien de la classe de base et qu'elle n'a pas été modifiée de quelque manière que ce soit, par exemple en la surchargeant (avec la fonction override int Foo
), caché (avec new int Foo
), les propriétés d'interface (c'est-à-dire la mise en œuvre explicite dans la classe dérivée ISome.Foo
) ou de toute autre manière qui conduit à ne pas appeler MyBase.Foo
quand instanceOfDerived.Foo
est utilisé.