gpt4 book ai didi

asp.net - 使用反射从 ASP.NET 模板代码隐藏类获取命名空间?

转载 作者:行者123 更新时间:2023-12-04 17:04:41 24 4
gpt4 key购买 nike

我正在尝试从 ASP.NET 模板 (.aspx) 代码隐藏类中获取命名空间。代码隐藏文件包含以下内容:

namespace MyTopNamespace.SubNamespace
{
public partial class PageClass : System.Web.UI.Page
{
// ...
}
}

我正在传递这个 PageClass 的一个实例到下面的方法。
private static string GetNamespace(Page page)
{
const string desiredPart = "MyTopNamespace";
if (page == null)
{
throw new ArgumentNullException("page");
}
string pageNamespace = page.GetType().FullName;

// For debugging
string pageAssembly = page.GetType().Assembly.FullName;
string pageAsmQualified = page.GetType().AssemblyQualifiedName;

if (!pageNamespace.Contains(desiredPart) &&
!pageAssembly.Contains(desiredPart) &&
!pageAsmQualified.Contains(desiredPart))
{
throw new ApplicationException(string.Format(
"Unexpected namespace or assembly: \n\n'{0}'\n'{1}'\n'{2}'",
pageNamespace, pageAssembly, pageAsmQualified));
}
// Remaining implementation ...
}

异常输出:

Unexpected namespace or assembly:

'ASP.pageclass_aspx'

'App_Web_pageclass.aspx.cdcab7d2.v4dudq3x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'

'ASP.pageclass_aspx, App_Web_pageclass.aspx.cdcab7d2.v4dudq3x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'



发生了什么 MyTopNamespace ,并且可以使用反射从类型中获得吗?

最佳答案

这是因为页面是在运行时编译的,然后给它一个临时程序集、命名空间,有时还有一个临时类名(在这个例子中似乎不是)。无法从通过运行时编译实例化的页面实例中检索先前的命名空间。

关于asp.net - 使用反射从 ASP.NET 模板代码隐藏类获取命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12095650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com