使用 Specflow.Assist .Dynamic 访问具有特殊字符的属性

Accessing properties with special characters using Specflow.Assist .Dynamic

我有一个 Specflow table,它的列 headers 带有特殊字符,例如 "CC $ Portion Total" & "Dollar Value (total in C2C)".

var content = table.CreateDynamicSet();

当我像上面那样创建动态集时,它删除了上面列 headers 的空格。但是我无法以

的形式访问它们的属性
content.CC$PortionTotal

content.DollarValue(totalinC2C)

因为,C# 在看到 $ 、( 和 ) 等特殊字符时会出错

有谁知道如何解决这个问题?

发送

已更新 这在 SpecFlow.Assist.Dynamic 的 1.1.0 中已修复,它允许 headers 列中的任何字符。在 属性 中,这将被删除。了解 functionality here

哎呀...是的,这将是一个问题,因为这些是 C# 中的保留字符。现在代码无法很好地处理这个问题,所以你唯一的办法就是重命名列(例如写出 "dollars" 并去掉括号)。

请在 GitHub 提出问题,我会看看我能做些什么,但我担心我将不得不删除保留字符,让名称更难理解。但它不会让你崩溃,至少 :)

对此感到抱歉。希望我的工作能给你一些想法

非常感谢您的 swift 回复,是的,如果我们能像去除空格那样去掉特殊字符,那就太好了。我认为在步骤定义级别将它们剥离是 oki(利益相关者不是在看那个,而是功能文件),因为我们想要的只是掌握 属性 值以针对实际结果进行断言。

甚至我问我的团队是否可以从我们的 SBE session 中的功能文件中删除特殊字符,但他们认为这不是一个好主意,因为它会降低利益相关者使用的活动文档的可重读性。我打算遍历 table headers 并删除特殊字符,然后创建一个动态集。顺便提一下,感谢您对这个动态库的贡献。这很棒!

在 Marcus 解决这个问题之前,我们可以按以下方式解决这个问题

            foreach (var header in table.Header)
        {
            table.RenameColumn(header, Regex.Replace(header, "[^0-9a-zA-Z]+", String.Empty));
        }