关于ListT的问题
关于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显示有缺区心绞痛要注意些什么
中风前兆的症状