属性的动态绑定
本文关键字:动态绑定 属性 | 更新日期: 2023-09-27 17:49:42
嗨,我使用实体框架作为我的映射器,我有dropDownList,我想在DataTextField后面的代码中设置到我的类的一些属性,但我不想用"someProperty"做静态,因为如果会在我的模型中改变字段,这个地方会给我例外。我怎么能做到,如果属性名称将改变,这里的绑定将指向改变的属性?
我找到了更好的解决方案:
public static string GetPropertyName<T, TReturn>(Expression<Func<T, TReturn>> expression)
{
MemberExpression body = (MemberExpression)expression.Body;
return body.Member.Name;
}
然后:
GetPropertyName((SampleClass) => r.SampleProperty)
所以这不是静态字符串,但我仍然不高兴因为当我改变实体模型中的文件时,这里我有一个错误,是否有可能随着模型的改变,这个绑定也会改变?
我们在数据绑定之前将业务对象映射到匿名对象,如下所示:
var objectsToBindToDropdown = businessObjects.Select(o => new
{
SomeProperty1 = o.BusinessProperty1,
SomeProperty2 = o.BusinessProperty2
});
dropDownList.DataTextField = "SomeProperty1";
// TODO: bind the drop down list
如果在模型中有一个变化,例如BusinessProperty1被重命名为AnotherBusinessProperty1,您将得到编译错误,而这正是我们的目标。