2010-01-18 4 views

답변

3

언리얼 스크립트를 만들려고 생각했지만, CodeBinaryOperatorType에 배타적 또는 연산이 포함되지 않은 이상한 문제가 있습니다. .NET 4의 새로운 표현식 트리는 과 같이 보입니다. CodeDom이 블록 수준에서 제공해야하는 기능 (기능 본문을 구성하는 문 블록과 같이)을 더 잘 나타내야합니다.

System.CodeDom의 외부 부분을 사용하고 System.Linq.Expressions의 내부를 사용하는 새로운 CodeDom이 필요하다고 생각합니다. 그런 다음 결과를 동적 어셈블리 또는 소스 코드를 출력으로 생성 할 수있게하십시오. (이제 생각해 보면 컴파일 된 어셈블리를 생성하는 것은 소스를 출력 할 새로운 "언어"를 만드는 것과 실제로 동일합니다.)

편집 : 위에 덧붙여 CodeModel API 구현을 고려해야합니다 왜냐하면 CodeDom은 새로운 언어를 Visual Studio에 통합 할 때 매우 자주 구현되기 때문입니다.

+4

마지막 Lang.NET 심포지엄에서 언어 제작자 중 한 사람이 비슷한 것에 대해 불평하고 Microsoft 엔지니어가 응답했습니다 (반쯤 농담하는 것). "CodeDom은 C# 인 한 모든 언어를 나타낼 수 있습니다." 그는 기본적으로 CodeDom이 실패하고 Expression Tree (또는 "Statement"Tree)가 앞으로 나아갈 길이라고 인정했습니다. –

+1

@ JörgWMittag : 표현식 트리를 사용하여 전체 클래스의 소스 코드를 생성 할 수 있습니까? –

관련 문제