문제

이 질문은 이미 있는 대답을 여기:

나가려고 일부를 생성하는 코드에서 런타임이 내가 어디에 넣어 일부 보일러 플레이트 재료와 사용자가 허용 입력해 실제 작동 코드입니다.내 보일러 플레이트 코드는 다음과 같은 형태입니다:

using System;

public class ClassName
{
    public double TheFunction(double input)
    {
        // user entered code here
    }
}

이상적으로 생각하고 싶 사용할 문자열.형식으로 삽입하려면 사용자 코드를 만들어 클래스 이름은,그러나 나는 예외가에서 형식 문자열하지 않는 한 그것은 다음과 같습니다:

string formatString = @"
using System;

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

그때 나는 문자열입니다.형식은 다음과 같다:

string entireClass = string.Format(formatString, "{", "}", userInput);

이것은 잘하고 나는 다룰 수 있는 면를 사용하{0}과{1}에서 형식 문자열에 장소의 중괄호를 제외하고는 지금 나의 사용자 입력을 사용할 수 없습니다 괄다.하는 방법이 있거나 탈출 중괄호 안에서 내 형식 문자열,또는 좋은 방법 중괄호를 사용자 코드로{0}'s 및{1}'s?

BTW,나는 이런 종류의 보안 문제를 일이 기다리고 있지만,이는 윈도우 폼 응용 프로그램를 위한 내부에서 사용하는 시스템에 인터넷에 연결되지 않도록 허용 가능한 위험에 상황이다.

도움이 되었습니까?

해결책

탈출하여 그들을 두배로 하는 그들을:

string s = String.Format("{{ hello to all }}");
Console.WriteLine(s); //prints '{ hello to all }'

http://msdn.microsoft.com/en-us/netframework/aa569608.aspx#Question1

다른 팁

"{{"및"}}"

내가 무엇을 생각하는 당신이 원하는 것은 이...

string formatString = @"
using System;

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

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

더블 괄호: string.Format("{{ {0} }}", "Hello, World"); 생산 것 { Hello, World }

추가 특별히 신중에서 액세스할 수 있는 사람 응용 프로그램입니다.더 나은 솔루션을 만들 수 있는 간단한 파서는 기대하고 몇 가지 제한되는,명령이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top