我有一个Specflow表,其列标题包含特殊字符,例如“CC $ Portion Total”& “美元价值(C2C总计)”。
var content = table.CreateDynamicSet();
当我创建上面的动态集时,它会删除上面列标题的空格。但是我无法以
的形式访问它们content.CC$PortionTotal
或
content.DollarValue(totalinC2C)
因为,当C#看到像$,(和)
这样的特殊章程时,会给出错误有谁知道如何解决这个问题?
的Tx
答案 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));
}