我在Repeater
范围内,我想查看它重复OnItemDataBound
的哪种对象,但这样做:
public void RepeaterListato_OnItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
Response.Write(repeaterListato.DataSource.GetType());
}
它返回整个集合的类型:
System.Collections.Generic.List`1[BrLayer.Pagina]
不是BrLayer.Pagina
。有办法吗?
答案 0 :(得分:1)
绝对有可能!这是一个有效的例子:
class Program
{
static List<string> MyGenericList = new List<string>();
static void Main(string[] args)
{
Console.WriteLine($"My list class's type is: {MyGenericList.GetType()}, and its first generic argument is: {MyGenericList.GetType().GetGenericArguments()[0]}");
Console.ReadLine();
}
}
请注意Type.GetType().GetGenericArguments()
的召唤,即魔术发生的地方。它会返回一个包含原始类型的所有泛型参数的数组。
答案 1 :(得分:1)
OnItemDataBound
事件处理程序有一个参数RepeaterItemEventArgs e
。
你想:
e.Item.DataItem.GetType()
请注意,如果e.Item.DataItem
为e.Item.ItemType
,Header
,Footer
或Separator
,则Pager
将为空;因此,如果您的Repeater可能包含任何这些元素,则应检查null或检查ItemType
。
请注意,将为DataSource中的每个项调用OnItemDataBound,并且在一般情况下,不能保证所有项都具有相同的Type。