从C#中的TXT编译和执行代码行



我在文本上有此行:

myData = myData.Replace(".jpg", ">JPG<");
myData = myData.Replace(".gif", ">GIF<");
myData = myData.Replace(".png", ">PNG<");
myData = myData.Replace(".tif", ">TIF<");

在我的C#程序上,我不会一个一个一个cicle的cicle:

for (int l=0; w<listWithLines.Count;l++)
{
// MY LINE
// listWithLines[l]
}

如果您的意图只是要替换字符串(如示例行中),并且您能够修改文本列表,最好的方法是仅提供替换令牌列表:

.jpg,>JPG<
.gif,>GIF<
.png,>PNG<
.tif,>TIF<

然后您的C#代码可以像这样修改:

for (int l=0; w<listWithLines.Count;l++)
{
    string[] strTokens = listWithLines[l].Split(',');
    // MY LINE
    myData = myData.Replace(strTokens[0], strTokens[1]);
}

我不认为您可以这样做,您可以使用CodeProviders等从外部来源编译代码块,但是我认为您似乎只能像您一样将其放入预定义的范围中想要(范围在您的循环中),除非您可以将其加载为块并将其传递到方法(将循环)作为操作。

我不知道这种方式从文本文件中编译和运行代码行的简便方法。但是,如果您要为MyData对象提供序列化并使用XML进行序列化的方法,则可以从外部文件中读取与此类似的事情。

您可以做到这一点,但是与reflection.emit之类的事情有很多工作。很确定您也必须参加整个课程您可以使用Ironpython或其他DLR实现之一来做到这一点,但也是很多工作将其变成XML

<Replaces>
<Replace from=".jpg" to=">JPG<" />
<Replace from=".gif" to=">GIF<" />
</Replaces>

然后做类似

的事情
XmlDocument doc = new XmlDocument();
doc.Load("Replaces.xml")
foreach(XmlNode replaceNode in doc.DocumentElement.SelectNodes("Replaces/Replace"))
{
  myData = myData.Replace(replaceNode.Attributes["from"].Value, replaceNode.Attributes["to"].Value);
}

相关内容

  • 没有找到相关文章

最新更新