asp.net, gettype () и полностью определенные имена классов

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

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

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(".", "_");

Спасибо, парни :)

13.10.2009 10:12:20
genius - спасибо rslite (отмечен как правильный ответ, потому что вы были первым) и vitaliy (отмечен) - я отредактирую свой оригинальный пост с правильным ответом.
Terry_Brown 13.10.2009 10:25:21
2 ОТВЕТА
РЕШЕНИЕ

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

string _myType = this.GetType().BaseType.FullName.Replace(".", "_");
2
13.10.2009 10:19:29
+1, но это немного сложнее, чем это. Большая часть управляющей разметки на странице ASPX заканчивается созданием частичного класса, с которым комбинируется частичный класс Code-behind, образуя полный базовый класс. Часто в классе наследования для страницы очень мало, за исключением случаев, когда может присутствовать некоторый встроенный код или элементы сценария runat = "server" (почему вы будете использовать их, когда доступен кодовый код, я не знаю).
AnthonyWJones 13.10.2009 10:36:55

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

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

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

1
13.10.2009 10:21:46