asp.net, gettype () и полностью определенные имена классов - PullRequest
2 голосов
/ 13 октября 2009

Я прочитал несколько других тем здесь, хотя ни одна из них не объясняет, как решить мою проблему.

У меня есть веб-приложение со следующей страницей (код позади)

namespace Company.Web.UI.Content
{
  public partial class Home_LoggedOut : Company.Web.UI.CompanyPage
  {
    string _myType = this.GetType().FullName.Replace(".", "_");
  }
}

Теперь я бы надеялся получить что-то вроде:

Company_Web_UI_Content_Home_LoggedOut

но вместо этого я получаю:

ASP_home_loggedout_aspx

Я явно что-то упускаю из-за структур классов и их работы, поэтому я хотел бы это понять, но есть ли для меня способ получить полностью определенное пространство имен + имя класса в этом сценарии?

В идеале я хотел бы включить это в базовый тип (Company.Web.UI.CompanyPage), чтобы я мог что-то с ним сделать, поэтому все, что предлагается, должно работать и на этом уровне.

Надеюсь, я здесь не совсем упускаю суть (ну, наверное, но, надеюсь, есть способ обойти это!)

Ура, Терри

Обновление: Ответ пришел как:

string _myType = this.GetType().BaseType.FullName.Replace(".", "_");

спасибо, ребята :) 1023 *

Ответы [ 2 ]

2 голосов
/ 13 октября 2009

Когда у вас есть страница с кодом, у вас фактически есть два класса. Один из кода, который наследуется классом для страницы. Вот почему вы получили это имя. Попробуйте это и посмотрите, работает ли оно:

string _myType = this.GetType().BaseType.FullName.Replace(".", "_");
1 голос
/ 13 октября 2009

Механизм ASP.NET генерирует класс на основе разметки ASPX, и этот класс наследуется от Company.Web.UI.Content.Home_LoggedOut. Вы можете попробовать:

this.GetType().BaseType.FullName.Replace(".", "_")

Честно говоря, я никогда не пробовал, но теоретически это должно работать =)

...