代码之家  ›  专栏  ›  技术社区  ›  Terry_Brown

ASP.NET、GetType()和完全限定的类名

  •  2
  • Terry_Brown  · 技术社区  · 16 年前

    我已经阅读了这里的其他一些主题,尽管它们都不能真正解释如何解决我的问题。

    我有一个带有以下页面的Web应用程序(代码隐藏)

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

    谢谢大家:)

    2 回复  |  直到 16 年前
        1
  •  2
  •   rslite    16 年前

    当你有一个背后有代码的页面时,你实际上有两个类。一个来自代码,代码后面的代码被页面的类继承。所以你才有这个名字。试试这个,看看它是否有效:

    string _myType = this.GetType().BaseType.FullName.Replace(".", "_");
    
        2
  •  1
  •   Vitaliy Liptchinsky    16 年前

    ASP.NET引擎根据您的ASPX标记生成一个类,该类继承自company.web.ui.content.home_loggedout。 你可以试试:

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

    老实说,我从来没有试过,但理论上应该是有效的。

    推荐文章