使用nameof在Devexpress Gridcontrol绑定中指定FieldName

时间:2018-09-19 23:05:27

标签: c# winforms devexpress nameof

我在正在快速发展的应用程序中使用Devexpress Gridcontrol,并且随着需求变得更加清晰/不断发展,这通常涉及到重构,更改属性名称等。

由于属性名称被硬编码为form.designer.cs文件中的字符串,因此很难进行重构。我使用Resharper,并且我知道您可以选择要搜索字符串文字的框,但是当文本为DescriptionManufacturer时,在我的项目中不相关的字符串文字中会出现数百次,因此可以实现这样会很耗时,坦白地说是浪费时间。

使用nameof运算符为显式指定字段名称之间提供了桥梁,同时还为重构提供了开箱即用的支持。

从我的设计器文件中获取此代码段。

// 
// colManufacturer
// 
this.colManufacturer.Caption = "Manufacturer";
this.colManufacturer.ColumnEdit = this.xrefManufacturerSearch;
this.colManufacturer.FieldName = "Manufacturer";
this.colManufacturer.Name = "colManufacturer";
this.colManufacturer.Visible = true;
this.colManufacturer.VisibleIndex = 1;

如果我将FieldName属性替换为

this.colManufacturer.FieldName = nameof(CrossRef.Manufacturer);

但是现在我无法打开此表单的设计器,错误代码“设计器无法在第125行处理未知名称nameof。方法InitializeComponent中的代码是由设计器生成的,不应手动修改。

是否可以对Devexpress字段名称使用nameof表达式?

1 个答案:

答案 0 :(得分:1)

由于以下原因,切勿在{{1​​}}文件内进行任何重构

  

InitializeComponent方法中的代码是由设计人员生成的,不应手动修改

Code-Dom serialization基础结构基于С#/ VB语法的受限制子集的原因在于此限制。因此,它不支持某些特定的语言功能,例如*.designer.cs。请查看CSharpCodeProvider,以了解允许使用哪些表达式,或与Visual Studio Team联系以获取更多信息。

关于DevExpres GridControl列的自定义,建议您考虑到GridControl支持wide range of annotation attributes的事实,该事实允许您指定如何在不进行设计时自定义的情况下显示,格式化和验证列完全没有您只应在DTO级别应用特定的批注,然后将这些对象集合直接分配给GridControl的DataSource属性:

nameof