Как использовать отражение внутри статического метода - PullRequest
1 голос
/ 30 ноября 2010

У меня есть метод регистрации:

    public static void WriteSimpleDebugTrace(string logFilePathArg, string messageArg)
    {

        StreamWriter writer;

        //Environment.ExpandEnvironmentVariables("%SystemDrive%") [will get to the c drive]
        if (EnumsAndConstants.EnableApplicationLogging)
        {
            writer = new StreamWriter(logFilePathArg, true);
            writer.Write("Time: " + DateTime.Now.ToString() + " Message: " + messageArg);
            writer.Write(Environment.NewLine);
            writer.Flush();
            writer.Close();
        }

    }

И я пытаюсь получить доступ к this.GetType (). Имя внутри него, но я не могу.Есть ли что-нибудь вокруг этого?Я хочу легко получить имя вызывающего класса при вызове этого метода без необходимости переписывать все вызовы этого метода ...

Ответы [ 2 ]

0 голосов
/ 30 ноября 2010

Вы можете использовать stackTrace.GetFrame(1).GetMethod() для извлечения вызывающего метода и оттуда связанного имени класса

0 голосов
/ 30 ноября 2010

Поскольку он статичен, экземпляр this отсутствует. Обычно вы передаете фактический экземпляр в метод для предоставления данных метода. У меня есть класс журналирования, который принимает Reflection.MethodInfo экземпляр для вывода. Поскольку вы не хотите изменять сигнатуру метода, возможно, вам больше повезет с использованием класса диагностики StackTrace:

http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace%28VS.71%29.aspx

Получить предыдущий фрейм, затем восстановить вызывающий метод. Пример в значительной степени говорит обо всем.

...