Подтвердить что ты не робот

Как вы помещаете {и} в строку формата

Я пытаюсь создать некоторый код во время выполнения, где я помещаю некоторые элементы котельной, и пользователю разрешено вводить фактический рабочий код. Мой код котельной выглядит примерно так:

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 Forms, которое используется для внутреннего использования в системах, которые не подключены к сети, поэтому риск приемлем в этой ситуации.

4b9b3361

Ответ 2

"{{" and "}}"

Ответ 3

Я думаю, что вы хотите...

string formatString = @"
using System;

public class ClassName
{{
    public double TheFunction(double input)
    {{
        {0}
    }}
}}";

string entireClass = string.Format(formatString, userInput);

Ответ 4

Двойные скобки: string.Format("{{ {0} }}", "Hello, World"); создаст { Hello, World }

Ответ 5

Будьте особенно осторожны, у кого есть доступ к приложению. Лучшим решением может быть создание простого анализатора, который ожидает только нескольких ограниченных команд.