使用反射从ASP.NET模板代码隐藏类获取命名空间?
我正在尝试从ASP.NET模板(.aspx)代码隐藏类获取名称空间。代码隐藏文件包含以下内容:使用反射从ASP.NET模板代码隐藏类获取命名空间?,asp.net,reflection,namespaces,code-behind,Asp.net,Reflection,Namespaces,Code Behind,我正在尝试从ASP.NET模板(.aspx)代码隐藏类获取名称空间。代码隐藏文件包含以下内容: namespace MyTopNamespace.SubNamespace { public partial class PageClass : System.Web.UI.Page { // ... } } 我将这个PageClass的一个实例传递给下面的方法 private static string GetNamespace(Page page) {
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 ...
}
异常输出:
意外的命名空间或程序集:
“ASP.pageclass_aspx”
'App_Web_pageclass.aspx.cdcab7d2.v4dudq3x,版本=0.0.0,区域性=中性,PublicKeyToken=null'
'ASP.pageclass_aspx,App_Web_pageclass.aspx.cdcab7d2.v4dudq3x,
版本=0.0.0.0,区域性=中性,PublicKeyToken=空'
MyTopNamespace
发生了什么,它可以使用反射从类型中获得吗?这是因为页面是在运行时编译的,然后会给它一个临时程序集、名称空间,有时还会给它一个临时类名(在本例中似乎不是这样)。无法从通过运行时编译实例化的页面实例中检索以前的命名空间