我已将 ASP.net GridView 绑定到一组匿名类型。
如何在 RowDataBound 事件处理程序中引用匿名类型的属性之一?
我已经知道像这样强制转换匿名类型的方法:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var AnonObj = Cast(e.Row.DataItem,
new { StringProperty = "", BoolProperty = false, IntProperty = 0 });
if (AnonObj.BoolProperty)
{
e.Row.Style.Add(HtmlTextWriterStyle.Color, "Red");
}
}
}
T Cast<T>(object obj, T type)
{
return (T)obj;
}
我想大多数人会说这很混乱,即使它确实有效。在我的真实代码中,我有超过 3 个属性,每当我添加或重新排序匿名类型的属性时,我都必须在两个地方更新代码。
有没有更好的方法来告诉 e.Row.DataItem 它具有特定类型的特定属性并强制对象给我该值(除了创建一个类)?