我试图在运行时生成一些代码,在其中放入一些样板内容,并允许用户输入实际的工作代码。我的样板代码看起来像这样:
using System;
public class ClassName
{
public double TheFunction(double input)
{
// user entered code here
}
}
理想情况下,我想我想使用 string.Format 插入用户代码并创建唯一的类名,但我在格式字符串上遇到异常,除非它看起来像这样:
string formatString = @"
using System;
public class ClassName
{0}
public double TheFunction(double input)
{0}
{2}
{1}
{1}";
然后我像这样调用 string.Format :
string entireClass = string.Format(formatString, "{", "}", userInput);
这很好,我可以处理在格式字符串中使用 {0} 和 {1} 代替大括号的丑陋问题,只是现在我的用户输入也不能使用大括号。有没有办法转义格式字符串中的大括号,或者将用户代码中的大括号转换为 {0} 和 {1} 的好方法?
顺便说一句,我知道这种事情是一个即将发生的安全问题,但这是一个 Windows 窗体应用程序,供未连接到网络的系统内部使用,因此在这种情况下风险是可以接受的。
通过将它们加倍来逃避它们:
string s = String.Format("{{ hello to all }}");
Console.WriteLine(s); //prints '{ hello to all }'
From http://msdn.microsoft.com/en-us/netframework/aa569608.aspx#Question1 http://msdn.microsoft.com/en-us/netframework/aa569608.aspx#Question1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)