动态绑定到属性

时间:2011-04-08 12:43:20

标签: c# entity-framework

您好我正在使用实体框架作为我的mapper,我有dropDownList,我想在代码behinde DataTextField中设置我的类的某些属性,但我不想用“someProperty”cos静态执行会改变我模型中的字段,这个地方会让我异常。我怎么能这样做,如果属性名称会改变,这里绑定将指向更改的属性?

我找到了更好的解决方案:

public static string GetPropertyName<T, TReturn>(Expression<Func<T, TReturn>> expression)
    {
        MemberExpression body = (MemberExpression)expression.Body;
        return body.Member.Name;
    }

然后:

GetPropertyName((SampleClass) => r.SampleProperty)

所以这不是静态字符串,但我仍然不满意当我更改实体模型中的字段时,这里我有一个错误,这是否可能随着模型的变化,这种绑定也会改变?

1 个答案:

答案 0 :(得分:0)

我们在数据绑定之前将业务对象映射到匿名对象,如下所示:

var objectsToBindToDropdown = businessObjects.Select(o => new 
    {
        SomeProperty1 = o.BusinessProperty1, 
        SomeProperty2 = o.BusinessProperty2
    });

dropDownList.DataTextField  = "SomeProperty1";
// TODO: bind the drop down list

如果模型有变化,例如BusinessProperty1重命名为AnotherBusinessProperty1,您将收到编译错误,这正是目标。