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

运行时读取ASP.NET页导入指令

  •  0
  • andleer  · 技术社区  · 16 年前

    运行时是否有任何方法读取ASP.NET导入指令?我有一个传递了许多类名的ExpressionBuilder。现在我必须完全验证这些名称,但是如果我可以从ExpressionBuilder中读取名称空间,我就可以节省大量的打印时间…

    <%@ Import namespace="MyNameSpace.Data.Library" %>
    

    / / / /

    string GetNamespace()
    {
        return Page.blablabla(); // MyNameSpace.Data.Library
    }
    

    更多信息:

    我正在使用System.Web.BuildManager.GetType()获取对象的类型。什么时候(或者它能)以某种方式引用进口指令?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Chad    15 年前

    在研究了这个课题之后,我认为这是不可能的。如果页面未显式或隐式(通过web.config)导入命名空间,则必须完全限定控件。

    此外,我认为名称空间不是类的“属性”。我相信编译器只会在编译时使用它们进行检查,然后在编译时完全限定控件/类。换句话说,编译后的代码没有“using or import”语句可供计算的独特列表。

        2
  •  2
  •   Asbjørn Ulsberg    15 年前

    如果在 namespaces section 属于 Web.config 而不是 <%@ Import %> 语句,您可以很容易地按如下编程方式读取它们:

    PagesSection pages = (PagesSection)
      ConfigurationManager.GetSection("system.web/pages");
    
    foreach (NamespaceInfo nsInfo in pages.Namespaces)
    {
      string ns = nsInfo.Namespace;
      Response.Write(String.Format("<p>{0}</p>", ns));
    }
    

    如果这不是一个选项,那么只需浏览 .aspx 带有一些正则表达式的文件。

    推荐文章