我在正在快速发展的应用程序中使用Devexpress Gridcontrol,并且随着需求变得更加清晰/不断发展,这通常涉及到重构,更改属性名称等。
由于属性名称被硬编码为form.designer.cs
文件中的字符串,因此很难进行重构。我使用Resharper,并且我知道您可以选择要搜索字符串文字的框,但是当文本为Description
或Manufacturer
时,在我的项目中不相关的字符串文字中会出现数百次,因此可以实现这样会很耗时,坦白地说是浪费时间。
使用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表达式?
答案 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