目前,对于我的combobox
绑定,我这样写:
comboBox1.DataSource = DataList
.Select(x => new { Value = x, Display = x.ToString() })
.ToList();
comboBox1.DisplayMember = "Display";
comboBox1.ValueMember = "Value";
我正在使用匿名类型为
comboBox1.DataSource
创建新类型,然后指定要为comboBox1.DisplayMember
和comboBox1.ValueMember
绑定的属性。我对这种方法不满意的是,我将必须对属性名称进行硬编码(例如:“ Display”和“ Value”),而宁愿使用
nameof
或其他任何可以保证编译时失败的属性(而不是运行时)我应该输错了。无论如何,我可以使用匿名类型的
nameof
吗?当然,我不想为此创建类(我认为太浪费了)。
最佳答案
这应该工作。 DataSource
是您的敌人,因为它的类型为object
。顺便说一句,您确定DataList
始终不为null吗?考虑添加一个空检查。
var source = DataList.Select(x => new { Value = x, Display = x.ToString() });
var first = source.FirstOrDefault();
comboBox1.DisplayMember = nameof(first.Display);
comboBox1.ValueMember = nameof(first.Value);
comboBox1.DataSource = source.ToList();
关于c# - 在组合框上使用匿名类型的nameof,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48876862/