南充信息港
育儿
当前位置:首页 > 育儿

关于ListT的问题

发布时间:2019-06-20 01:38:21 编辑:笔名

  关于ListT的问题

  有一个方法A返回一个List T对象,在另一个方法B中接收,方法B中不能直接得到List T中T的类型,但却得遍历这个List T对象

  问题:

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

  我的目的扩展dropdownlist显示一颗树结构,先看dropdownlist的绑定方法:

  taSource = List T;

  taBind();

  我也想用这种方式:taSource = 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))

  {

  pendFormat(" option value=\"{0}\"{1} /option", , "..." + );

  CreateSubOption(listTree,);

  }

  }

  给你举个例子希望对你有帮助

  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)

  {

  ite(s+" br/");

  }

  }

  private List string AddItem()

  {

  List string list = new List string();

  d("1");

  d("2");

  d("3");

  d("4");

  return list;

  }

CT显示有缺区
心绞痛要注意些什么
中风前兆的症状
友情链接