Я могу получить экземпляр вызова из метода через отражение/диагностику?

Мне нужен был подобный так называемый «контекст-корень». Я сделал это в файле conf под /etc/httpd/conf.d/, используя WSGIScriptAlias:

myapp.conf:


    WSGIScriptAlias /myapp /home//myapp/wsgi.py

    /myapp>
        Order deny,allow
        Allow from all
    


Итак, теперь я могу получить доступ к моему приложению как: http: // localhost: 5000 / myapp

См. руководство - http://modwsgi.readthedocs.io/en/develop/user-guides/quick-configuration -guide.html

12
задан Peter Mortensen 17 September 2013 в 15:57
поделиться

5 ответов

Я не полагаю, что Вы можете. Даже классы StackTrace и StackFrame просто дают Вам называющий информацию, не доступ к экземплярам.

Я не уверен точно, почему Вы хотели бы сделать это, но знать, что, даже если бы Вы могли бы сделать это, это, вероятно, было бы очень медленно.

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

6
ответ дан 2 December 2019 в 19:33
поделиться

Считайте создание метода дополнительным методом. Определите его как:

public static StaticExecute(this object instance)
{
    // Reference to 'instance'
}

Как это называют:

this.StaticExecute();

Я не могу думать о способе сделать то, что Вы хотите сделать непосредственно, но я могу только предложить, чтобы при нахождении чего-то Вы не упустили статические методы, которые не будут иметь один, и анонимные методы, которые будут иметь экземпляры автоматически сгенерированных классов, которые будут немного нечетны.

Я действительно задаюсь вопросом, необходимо ли просто передать объект вызова в как надлежащий параметр. В конце концов, a static подсказка, что этот метод ни от чего не зависит кроме своих входных параметров. Также обратите внимание, что этот метод может быть сукой для тестирования, поскольку любой тестовый код, который Вы пишете, не будет иметь того же объекта вызова как рабочая система.

10
ответ дан 2 December 2019 в 19:33
поделиться

Просто сделайте, чтобы ExecuteMethod взял объект. Затем у Вас есть экземпляр несмотря ни на что.

1
ответ дан 2 December 2019 в 19:33
поделиться

В случае статического метода, называя Ваш статический метод, нет никакого экземпляра вызова.

Найдите другой способ выполнить независимо от того, что Вы пытаетесь сделать.

1
ответ дан 2 December 2019 в 19:33
поделиться

Я чувствую, что пропускаю что-то, здесь. От статического метода можно назвать буквально где угодно. Нет никакой гарантии, что класс A или экземпляр класса B появятся где угодно в стеке вызовов.

Там получен, чтобы быть лучшим способом выполнить независимо от того, что Вы пытаетесь сделать.

0
ответ дан 2 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: