Если вы используете C # 3.0, есть способ получить имя свойства динамически, без жесткого кодирования.
private string GetPropertyName<TValue>(Expression<Func<BindingSourceType, TValue>> propertySelector)
{
var memberExpression = propertySelector.Body as MemberExpression;
return memberExpression != null
? memberExpression.Member.Name
: string.empty;
}
Где BindingSourceType
- имя класса вашего экземпляра объекта источника данных.
Затем вы можете использовать лямбда-выражение для выбора свойства, которое вы хотите связать, строго типизированным способом:
this.textBox.DataBindings.Add(GetPropertyName(o => o.MyClassProperty),
this.myDataSourceObject,
"Text");
Это позволит вам безопасно выполнить рефакторинг вашего кода, не затрачивая все свои связывающие данные вещи. Но использование деревьев выражений - это то же самое, что использование отражения с точки зрения производительности.
Предыдущий код довольно уродливый и непроверенный, но вы поняли идею.