Habituellement, j'accéder à une méthode de réflexion comme celui-ci:Comment puis-je accéder à une méthode implémentée explicitement en utilisant la réflexion?
class Foo
{
public void M() {
var m = this.GetType().GetMethod ("M");
m.Invoke(this, new object[] {}); // notice the pun
}
}
Cependant, cela ne fonctionne pas lorsque M est une implémentation explicite:
class Foo : SomeBase
{
void SomeBase.M() {
var m = this.GetType().GetMethod ("M");
m.Invoke(this, new object[] {}); // fails as m is null
}
}
Comment accéder une méthode explicitement mis en œuvre en utilisant la réflexion? C'est parce que le nom de la méthode n'est pas "M"
, ce sera "YourNamespace.SomeBase.M"
Dans ce cas 'M 'est privé. Vous devriez utiliser l'enum 'BindingFlags'. – Steven