System.InvalidCastException: 指定的转换无效
问题:
以下代码中用自定义CLASS 填充ArrayList:
>>为何当数据源被CACHE缓存后,<%# ((MyInfo)Container.DataItem).Item %>就不成功,抛出"System.InvalidCastException: 指定的转换无效"
>>但是如果不用CACHE缓存,就可以成功?
<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(object sender, EventArgs e) {
Repeater1.DataSource = GetIList();
Repeater1.DataBind();
}
IList GetIList(){
if( Cache["MyInfo"] != null ){
return (IList)Cache["MyInfo"];
}else{
ArrayList il = new ArrayList();
il.Add( new MyInfo("test0") );
il.Add( new MyInfo("test1") );
il.Add( new MyInfo("test2") );
Cache["MyInfo"] = il;
return (IList)il;
}
}
class MyInfo{
string _item = null;
public MyInfo( string item ){
_item = item;
}
public string Item{
get{ return _item;}
}
}
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<asp:Repeater id="Repeater1" runat="server">
<ItemTemplate>
<table border=1>
<tr>
<td>
<%# ((MyInfo)Container.DataItem).Item %>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>