Я пытаюсь сгенерировать некоторый код во время выполнения, где я вставляю некоторые элементы котельной, и пользователю разрешено вводить фактический рабочий код. Мой шаблонный код выглядит примерно так:Как вы помещаете {и} в строку формата
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}?
BTW, я знаю, что это проблема безопасности, ожидающая своего появления, но это приложение Windows Forms, предназначенное для внутреннего использования в системах, которые не подключены к сети, поэтому риск приемлем в этой ситуации.
Это проблема безопасности, потому что код, который может выполнить пользователь, может быть буквально любым, а не потому, что он подключен к сети. – MusiGenesis 2008-10-02 03:27:44
На самом деле нет, просто потому, что код может быть чем-то, что не дает пользователю возможности делать все, что он не мог сделать раньше. Приложение работает в том же контексте, что и пользователь, и только тот, кто имеет доступ к машине, на которой он работает, может ввести код. – 2008-10-09 19:42:23