Можете ли вы использовать отражение, чтобы узнать тип объекта, над которым выполняется текущий метод? - PullRequest
2 голосов
/ 17 января 2012

Я знаю, как получить текущий метод (MethodBase.GetCurrentMethod()).

Однако свойство DeclaringType MethodBase даст мне тип, для которого определен метод.

Меня интересует тип метода, для которого он был вызван во время выполнения.

1 Ответ

6 голосов
/ 17 января 2012

Если вы имеете в виду тип самого объекта, тогда просто используйте this.GetType()?Это даст вам тип this, на котором выполняется текущий метод.

Если вы имеете в виду тип ссылки, по которой был выполнен метод, то определить это не представляется возможным.Рассмотрим виртуальные методы в качестве примера.

abstract class Animal {
  public abstract void MakeNoise();
}
abstract class Dog : Animal { }
class Labrador : Dog {
  public override void MakeNoise() {
    ...
  }
}

Тип ссылки может быть Animal, но если объект Labrador, будет вызвана эта версия метода MakeNoise.Это не способ из метода MakeNoise узнать, был ли он вызван из экземпляра Animal, Dog или Labrador.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...