在这种CLSCompliant
情况下不起作用。问题是字段名称Invoice address
包含一个空格,因此标识符不符合 CLS(为什么这个带有下划线的名称不符合 CLS?)。
问题中没有说明上下文,但此错误经常出现在 RDK 报告中。
报表设计器通过重命名字段来解决问题
<Field name="non_CLS_Compliant_Name">
<DataField>non CLS Compliant Name</DataField>
</Field>
在代码中,您应该用下划线 (_) 替换名称中的所有不符合要求的字符,并在开头添加 ID 以解决第一个字符的问题
Dim RgxGlobal As New System.Text.RegularExpressions.Regex("[^\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\p{Cf}]")
Dim RgxStart As New System.Text.RegularExpressions.Regex("\A[^\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]")
Dim NewFieldName As String = RgxGlobal.Replace(ColName, "_")
If RgxStart.IsMatch(NewFieldName) Then NewFieldName = "ID" & NewFieldName