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

时间:2015-10-23 05:31:18

标签: c# dynamic bdd specflow

我有一个Specflow表,其列标题包含特殊字符,例如“CC $ Portion Total”& “美元价值(C2C总计)”。

var content = table.CreateDynamicSet();

当我创建上面的动态集时,它会删除上面列标题的空格。但是我无法以

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

content.DollarValue(totalinC2C)

因为,当C#看到像$,(和)

这样的特殊章程时,会给出错误

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

的Tx

3 个答案:

答案 0 :(得分:3)

<强>已更新 这在1.1F的SpecFlow.Assist.Dynamic中得到修复,它允许列标题中的任何字符。在该物业,这将被剥离。阅读functionality here

Oooouch ...是的,这将是一个问题,因为这些是C#中的保留字符。现在代码不会优雅地处理这个问题,所以你只能重命名列(写出&#34;美元&#34;并丢失括号例如)。

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

很抱歉。希望我的工作能给你带来一些想法

答案 1 :(得分:0)

tx很快就会得到你的快速回复,是的,如果我们可以删除像空格一样的特殊字符,那就太好了。它的oki在步骤定义级别剥离它我认为(利益相关者不看那个,但是特征文件),因为我们想要的是获取属性值以断言实际结果。

即使我问我的团队是否可以从SBE会话中的特征文件中删除特殊字符,但他们认为这不是一个好主意,因为它会降低利益相关者使用的活文档的可重复性。我计划迭代表头并删除特殊字符,然后创建一个动态集。顺便说一句,请提出一张票,感谢您对这个动态库的贡献。这很棒!

答案 2 :(得分:0)

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

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