main
1using System;
2using System.Linq.Expressions;
3
4namespace MoMoney.Presentation.Winforms.Databinding
5{
6 public interface IBindingSelector<TypeToBindTo>
7 {
8 IPropertyBinder<TypeToBindTo, TypeOfProperty> bind_to_property<TypeOfProperty>(
9 Expression<Func<TypeToBindTo, TypeOfProperty>> property_to_bind_to);
10 }
11
12 public class BindingSelector<TypeToBindTo> : IBindingSelector<TypeToBindTo>
13 {
14 private readonly TypeToBindTo thing_to_bind_to;
15 private readonly IPropertyInspectorFactory factory;
16
17 public BindingSelector(TypeToBindTo thing_to_bind_to, IPropertyInspectorFactory factory)
18 {
19 this.thing_to_bind_to = thing_to_bind_to;
20 this.factory = factory;
21 }
22
23 public IPropertyBinder<TypeToBindTo, TypeOfProperty> bind_to_property<TypeOfProperty>(
24 Expression<Func<TypeToBindTo, TypeOfProperty>> property_to_bind_to)
25 {
26 var property_information = factory.create<TypeToBindTo, TypeOfProperty>().inspect(property_to_bind_to);
27 return new PropertyBinder<TypeToBindTo, TypeOfProperty>(property_information, thing_to_bind_to);
28 }
29 }
30}