科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件关于List的问题

关于List的问题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

关于List的问题

作者:csdn 来源:csdn 2009年12月15日

关键字: 问答 ASP.NET

  • 评论
  • 分享微博
  • 分享邮件

关于List<T>的问题

有一个方法A返回一个List <T>对象,在另一个方法B中接收,方法B中不能直接得到List <T>中T的类型,但却得遍历这个List <T>对象
问题:
能不能在B中通过反射获得T的对象类型?据说这是不可以的,因为在编绎期间T只作为一个占位符,在运行期间由具体类型替换。但如果这样的话,怎么遍历这个返回的List <T>对象?自带的DropDownList的DataSource可以为设定为List <T>,它这个应该也是遍历这个数据源,然后绑定的吧。

我的目的扩展dropdownlist显示一颗树结构,先看dropdownlist的绑定方法:
dropdownlist.DataSource = List <T>;
dropdownlist.DataBind();

我也想用这种方式:customContorl.DataSource = List <T>;
然后在CustomContorl里遍历这个List <T>:
      protected override void Render(HtmlTextWriter writer)
      {
          .....
          List <ITree> listTree = (List <ITree>)dataSource; 
          //由于不能确定T的类型,我写了一个ITree的接口。这样一来,
          //每次我用这个自定义控件时T的类型都必须继承这个接口,这显然太2了
          //我想实现的效果正如自带的dropdownlist那样,只需知道它的DataSource是个List <T>类型就可以了
          WriteDropDownTree(listTree, -1);
          .....
      }
      private void WriteDropDownTree <T>(List <T> listTree, int rootID) where T : ITree
      {
            CreateTree(listTree, rootID);
      }

        private void CreateTree <T>(List <T> listTree, int rootID) where T : ITree
        {
            foreach (T node in GetChildeNodes(listTree, rootID))
            {
                sbTree.AppendFormat(" <option value=\"{0}\">{1} </option>", node.ID, "..." + node.Name);
                CreateSubOption(listTree,node.ID);
            }
        }

给你举个例子希望对你有帮助
protected void Page_Load(object sender, EventArgs e)
        {

            List <string> list=AddItem();
            ShowItem(list);
        }

        private void ShowItem(List <string> list)
        {
            foreach (string s in list)
            {
                Response.Write(s+" <br/>");
            }
        }

        private List <string> AddItem()
        {
            List <string> list = new List <string>();
            list.Add("1");
            list.Add("2");
            list.Add("3");
            list.Add("4");
            return list;
        }

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章