【发布时间】:2013-03-07 00:15:28
【问题描述】:
我只是对将数据绑定到组合框(或我猜的其他可绑定对象)背后的一些编码实践感到好奇。 假设我创建了一个对象,我想将它们添加到组合框中。 所以我创建了我的对象并给它一些属性。
public class ObjectForList
{
public string ObjectName { get; set; }
public int ObjectID { get; set; }
public string SomeOtherProperty { get; set; }
public ObjectForList()
{
}
}
然后我列出它们并将其设置为我的组合框的来源
List<ObjectForList> myObjects= new List<ObjectForList> { ...bunch of ObjectForList objects...};
comboBox1.DataSource = myObjects;
comboBox1.DisplayMember = "ObjectName";
comboBox1.ValueMember = "ObjectID";
我是这么理解的,至少应该这样做。我在网上找到的所有解释中都看到了该实现。
但是,将 Display 和 Value 成员作为变量名称的硬编码字符串对我来说似乎并不容易。 如果几年后有人在 Visual Studio 中出现并重构 ObjectID 属性(为“MyID”或其他东西),那么组合框绑定将会中断。而且它仍然会编译,所以在加载带有组合框的表单之前没有人会注意到。 同样,您将无法使用“查找引用”找到该属性的用途,因为它只是一个字符串。
人们对此有何看法?如何使用它并保持代码可维护?
【问题讨论】:
-
你是绝对正确的。 VS 的自动重构不会处理这个问题,如果你有很多 ComboBox,它可能会有点麻烦。据我所知,没有很好的方法来解决这个问题......
-
好问题,OP。以亚当的评论和您的帖子为基础,有谁知道 Resharper 是否可以处理这样的案件?
-
每小时去一次酒类商店,因为这个难题是一个很好的问题。
-
ReSharper 将告诉您正在重命名的符号的任何字符串用法,并提供为您更改它。有时这非常有用,就像您在此处的示例一样。
标签: c# .net data-binding visual-studio-2005