Есть ли в .NET функциональность, с помощью которой метод может определить, какой класс вызвал его - PullRequest
1 голос
/ 01 марта 2011

У меня есть класс, в котором есть метод, и у меня есть несколько страниц aspx, которые вызывают этот метод. Теперь я хочу знать в этом методе, какая страница вызывает его.
ИЛИ
Есть ли в .NET функциональность, с помощью которой метод может определить, какой класс вызвал его

Ответы [ 4 ]

3 голосов
/ 01 марта 2011

Тьфу.

Ну все равно,

 new StackTrace().GetFrame(1).GetMethod().DeclaringType

Это даст вам тип.

По какой причине это действительно необходимо? Похоже на решение для спагетти.

2 голосов
/ 01 марта 2011

Попробуйте этот код:

        System.Diagnostics.StackFrame f = new System.Diagnostics.StackFrame();
        Type t = f.GetMethod().DeclaringType;
        string name = t.FullName;
        string classname = name.Substring((name.IndexOf('.')+1));

источник эта ссылка

1 голос
/ 01 марта 2011

Почему бы не использовать интерфейс?
Таким образом, вы также можете ограничить страницы, которые могут использовать метод.

interface INamedPage {
    string Name { get; set; }
}

Вот ваша страница:

public PageOne: Page, INamedPage {
    ...
    public string Name {
        get { return "Page One"; }
    } 
    ...
}

Методэто называется:

public void WhoIsIt (INamedPage page) {
   return "Oh it was " + page.Name + " again!";
}

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

0 голосов
/ 01 марта 2011

Вот, пожалуйста. Это должно сказать вам полный URL-адрес страницы, которая запросила текущую.

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