【问题标题】:asp.net, gettype() and fully qualified class namesasp.net、gettype() 和完全限定的类名
【发布时间】:2010-12-06 06:28:19
【问题描述】:

我已经阅读了这里的其他几个主题,但没有一个真正解释如何解决我的问题。

我有一个带有以下页面的 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(".", "_");

谢谢大家:)

【问题讨论】:

  • 天才——感谢 rslite(标记为正确答案,因为你是第一个)和vitaliy(标记)——我会用正确的答案编辑我的原始帖子。

标签: asp.net gettype


【解决方案1】:

ASP.NET 引擎根据您的 ASPX 标记生成一个类,该类继承自 Company.Web.UI.Content.Home_LoggedOut。 你可以试试:

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

老实说,我从未尝试过,但理论上它应该可以工作 =)

【讨论】:

    【解决方案2】:

    当您有一个带有代码的页面时,您实际上有两个类。一种是来自页面类继承的代码。这就是为什么你得到这个名字。试试这个,看看它是否有效:

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

    【讨论】:

    • +1 但它比这更复杂一些。 ASPX 页面中的许多控件标记最终会创建一个分部类,代码隐藏分部类与该分部类组合形成完整的基类。通常在页面的继承类中几乎没有什么,除了可能有一些内联代码或 runat="server" 脚本元素(我不知道为什么在代码隐藏可用时使用它们)。
    猜你喜欢
    • 2016-04-21
    • 2020-11-12
    • 2011-11-08
    • 1970-01-01
    • 2021-03-25
    • 2015-08-03
    • 2020-07-14
    • 2019-12-14
    • 2011-07-16
    相关资源
    最近更新 更多