Access a property of IEnumerable

I have a custom class for a combobox having following properties:

public IEnumerable<object> ItemsSource
{
    get { return (IEnumerable<object>)GetValue(ItemsSourceProperty); }
    set
    {
        SetValue(ItemsSourceProperty, value);
    }
}

public string DisplayMemberPath
{
    get { return (string)GetValue(DisplayMemberPathProperty); }
    set { SetValue(DisplayMemberPathProperty, value); }
}

where ItemsSourceProperty,DisplayMemberPathProperty are the dependency properties already registered.

Now if ItemSource has a list of custom objects :{id int, name string}. and DisplayMemberPath has value:'name' or 'id'. How can I access 'name' or 'id' properties of my object ? `

Jon Skeet
people
quotationmark

It's not entirely clear why you need to do this binding yourself (when WPF does a lot of this for you), but this might work:

foreach (object item in ItemsSource)
{
    var property = item.GetType().GetProperty(DisplayMemberPath);
    var value = property.GetValue(item, null);
    // Use the value here
}

Note that this will be pretty slow, and will only handle a single property name (rather than a full path). There are more complex alternatives which would perform better, but I'd probably go with the simplest approach first.

people

See more on this question at Stackoverflow