Bru*_*oLM 2 c# datasource dynamic anonymous-types .net-4.0
我有一个GridView地方DataSource:
items.Select(i => new { ID = i.ID, Foo = i }).ToList();
Run Code Online (Sandbox Code Playgroud)
在RowDataBound我想要访问的对象,但我不知道如何投射它...
grid.RowDataBound += (s, e) =>
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
dynamic item = e.Row.DataItem as 'what?';
}
};
Run Code Online (Sandbox Code Playgroud)
如何访问此对象属性?
<asp:GridView ID="grid" runat="server" />加
protected void Page_Load(object sender, EventArgs ev)
{
var provider = new FooProvider();
grid.DataSource = provider.Elements;
grid.RowDataBound += (s, e) =>
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
dynamic item = e.Row.DataItem;
var test = item.ID;
}
};
grid.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
FooProvider.cs码:
public class FooProvider
{
public IEnumerable<dynamic> Elements
{
get
{
return new int[] { 1, 2, 3 }
.Select(i => new { ID = i, Foo = i * 3 }).ToList();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在网站上添加参考.
预期结果:获取匿名对象的ID.
目前的结果:
用户代码未处理RuntimeBinderException
'object'不包含'ID'的定义
反思是唯一的方法吗?
不要使用匿名类型.上课.
public class MyCustomRow
{
int ID {get;set;}
Foo Foo {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
(wtf?动态?)