我正在向 WinForms 应用程序添加一个组合框,我遇到了 DisplayMember 和 ValueMember 属性。它们的功能正是我的应用程序所需要的,但我不确定我喜欢它们的工作方式。
comboBox.Items.Add(myObj);
comboBox.DisplayMember = "Name";
comboBox.ValueMember = "Id";
在上面的代码中,我的对象是实际的“Item”,它的名称和 Id 属性将分别用于显示的文本和选定的值。我不确定的是硬编码的“Name”和“Id”被传递到这些属性中。这是编译时没有检查的事情。因此,如果我将 object.Name 属性更改为 object.FullName,此代码将在运行时中断。
我考虑过动态获取属性名称(如此处所问: get name of a variable or parameter ),但这感觉非常错误。
那么,使用这些属性是否不明智?如果是这样,将我的对象存储为组合框项目的推荐方法是什么?
最佳答案
使用它们完全没问题。
对于您关心的编译时检查:在下一版本的 C# 中,有一个 nameof
运算符,与现在已经存在的 typeof
相当。
你可以这样使用它:
comboBox.DisplayMember = nameof(obj.Name);
有solutions已经可以得到类似的结果。
关于c# - 使用comboBox.DisplayMember 和ValueMember 属性是一个坏主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23071025/