Как получить Module.Function Caller - PullRequest
0 голосов
/ 29 февраля 2012

Я написал серию страниц ASP.NET, среди которых есть несколько общих методов. По моему незнанию, лучший способ, который я смог найти, чтобы переместить эти распространенные методы в отдельный файл, - это модуль. Однако мне нужен способ определить, с какой страницы был вызван метод?

Например, у меня есть вызов метода WriteToErrorLog со следующей подписью:

WriteToErrorLog(ByVal sender As Page, ByVal Source As String, ByVal Message As String, ByVal StackTrace As String)

Поскольку это находится в модуле, страница отправителя неизвестна. Я хотел бы знать, есть ли способ получить к нему доступ? Я ожидаю, что это произойдет, так как, если произошла ошибка, трассировка стека должна показывать воспроизведение того, что привело вас к ошибке. Мне действительно нужно передать страницу или я могу получить эту функцию и вызывающую функцию другим способом?

Заранее спасибо:)

1 Ответ

1 голос
/ 29 февраля 2012

Вы можете получить ссылку на текущий HttpHandler (страницу) даже в статическом / общем контексте, как в Module.

Следующее является отказоустойчивым даже вне HttpContext (например, class-библиотека, на которую ссылается проект Winforms):

If HttpContext.Current IsNot Nothing Then
    Dim page = TryCast(HttpContext.Current.Handler, Page)
    If page IsNot Nothing Then
        ' Do something with it '
    End If
End If

HttpContext.CurrentHandler

Редактировать : имя вызывающего метода вы получите вследующим образом:

Dim method = New StackTrace().GetFrame(1).GetMethod().Name

http://www.csharp -examples.net / отражение-вызова-метода-имени /

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