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

时间:2012-11-07 15:52:51

标签: c# txtextcontrol

我的文字是这样的:

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

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

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

4 个答案:

答案 0 :(得分:0)

我认为你不能这样做,你可以使用CodeProviders等从外部源代码编译一段代码,但我不认为你可以把它放到你想要的预定义范围内(范围在你的范围内) for循环),除非您可以将其作为块加载并将其作为Action传递给方法(可以循环)。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您的目的只是进行字符串替换(如示例行中所示),并且您可以修改文本列表,那么最好的方法是在列表中仅提供替换标记:

.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]);
}

答案 3 :(得分:0)

你可能会这样做,但是像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);
}