Узнать объект, вызвавший метод.

программирование C# .net

Здравствуйте! Подскажите, как получить ссылку, на объект и которого вызван метод?


using System.Diagnostics;
using System.Reflection;

public class Logger
{
public static void Test()
{
StackTrace stackTrace = new StackTrace(true);
StackFrame frame = stackTrace.GetFrame(1);

MethodBase m = frame.GetMethod();
m.GetGenericArguments().//что сним делать, или я не туда копаю?

Debug.Log(frame.ToString());
}
}

Примечание:
Mark Softer "this"
Не понял, что мне с ним делать?

Примечание:
Я всё равно не пойму, куда мне его втулить?
Ну вот, создал я, StackTrace, взял из него второй кадр(место откуда был вызван текущий метод). Из кадра я могу получить имя вызывающего "файла", строку в этом файле и и.п., Как мне на основе фрейма, или ещё чего-нибудь, получить ссылку на объект, метод которого, вызвал этот метод?

Примечание:
Это, вообще, возможно?
Ответы:
this.свойство, this ссылается на текущий объект внутри метода, из которого он вызван.
1) Ваш метод могли вызвать из статического метода, так что объекта может и не быть.
2) Даже если объект был, сборщик мусора мог его уже собрать.
3) Второй фрейм стека вовсе не обязательно указывает на метод который Вас вызвал.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.