动态选择实体属性?

时间:2012-11-12 14:57:19

标签: c# wpf entity-framework data-binding

我会尝试解释现状:

我有一个WPF应用程序,我使用MVVM模式。所以代码分为至少三个“层”。现在,GUI由放置在外部XML文件中的可定制定义动态构建。因此,例如,在该XML文件中定义网格的每一行及其含义和布局。它应该从列中读取数据源中的表。 顺便说一句,该数据源是使用Entity Framework在我的应用程序中实现的。

现在,我无法找到一种从实体动态选择属性的方法。例如:

Binding bnd = new Binding();
bnd.Source = from i in DataModel.Entities.machine
             where i.name == Properties.Settings.Default.CurrentMachine
             select i.<<THE COLUMN DEFINED IN THE XML>>

所以我正在寻找一种方法将字符串(取自XML)转换为实体的实际属性。

可以这样做吗?如果是这样,究竟是怎么回事?

非常感谢!

1 个答案:

答案 0 :(得分:0)

尝试使用reflection和GetProperty()方法。

    public Binding ReflectionBinder(string propertyName)
    {
        var binding = new Binding();
        var src = (from i in DataModel.Entities.machine
                   where i.name == Properties.Settings.Default.CurrentMachine
                   select i);

        binding.Source = src.GetType().GetProperty(propertyName).GetValue(src, null);

        return binding;
    }