如何解决用参数值替换硬编码的问题
我的 BIML 文件中有这个结构:
myColumns = myFile.ReadLine().Replace("\"","").Split('|');
我想将其替换为:
myColumns = myFile.ReadLine().Replace("\"","").Split('<#=delimiter#>');
但显然这不起作用。不知何故,Syntaxhighlighting 告诉我这不起作用.....
还有:
string[] myFiles = Directory.GetFiles(path,"*.csv");
string[] myFiles = Directory.GetFiles(path,"*.<#=filetype#>");
单纯使用时
myColumns = myFile.ReadLine().Replace("\"","").Split('delimiter');
它告诉我Cannot implicitly convert type 'string' to 'char'
分隔符声明为 string delimiter ="|"
将其更改为 char delimiter ="|"
时,我得到完全相同的错误,但随后在我声明分隔符的行.....
解决方法
如果我对您的理解正确,您的文件的这一部分:
myColumns = myFile.ReadLine().Replace("\"","").Split('|');
将已经包含在代码块或单独的代码文件中,是吗?如果是这样,您不需要使用另一个代码块参数化 delmiter
,而只需引用该变量,假设您已经在某处声明了它:
<#
...
char delimiter = '|';
...
var myColumns = myFile.ReadLine().Replace("\"","").Split(delimiter);
...
#>
为了回应您的评论,在您的 Biml 文件中使用此代码可能看起来像这样?
...
<Tables>
<Table Name="TableName" etc>
<Columns>
<# // This is the start of a Code Block
// We can define some C# data structures
char delimiter = '|';
var myColumns = myFile.ReadLine().Replace("\"","").Split(delimiter);
// Then start a loop which will generate some Biml nodes
foreach(string col in myColumns)
{
// Note that the foreach loop is left open despite closing the code block on the next line.
// This means the following Biml is looped over until the foreach ends.
#>
<Column Name="<#=col#>" etc />
<# // We can then start another code block which carries on from the last one
} // This closes the foreach loop defined earlier
#>
</Columns>
</Table>
</Tables>
...
在此示例中,您可以看到 C# 代码如何包含在 <#
和 #>
标记中,并在其他地方使用原始 Biml。使用 <#=
和 #>
标记是引用先前定义的 C# 变量的语法快捷方式。显然,只有当您位于文件的 Biml 部分而不是代码块中时才需要这些。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。