-2

基本的に、私は2つの質問があります:

IronPython1) C# アプリケーションでコード (ツール、ライブラリ) を発行または生成する方法。このプロセスの結果は、IronPythonIL コードではなく実際のコードで構成される文字列になるはずです。

IronPython2) (単純に を使用して) 自分でコードを生成するよりも、上記のアプローチはどの程度有益StringBuilderですか?

この IMAGINARY 擬似コード ジェネレーターに似たコード ジェネレーター ライブラリを探しています。

IronPythonCodeGenerator generator = new IronPythonCodeGenerator();
Parameter param = new Parameter("str");
ParameterValue value=new ParameterValue(param,"This piece is printed by the generated code!!!");
Function function = IronPythonCodeGenerator.CreateFunction("PrintExtended",param);
function.AppendStatement("print",param);
function.AppendStatement(Statements.Return);
FunctionCall functionCall = new FunctionCall(function,value);
generator.MainBody.Append(function);
generator.MainBody.Append(functionCall);

Console.WriteLine(generator.MainBody.ToString());

、IronPython コードを出力します。

def PrintExtended( str ):
   print str;
   return;

PrintExtended("This piece is printed by the generated code!!!");
4

1 に答える 1

2

Reflection.Emit高水準言語コードを生成するためではなく、IL コードを生成するためのものです。したがって、ターゲット言語が IronPython である場合は、それを で構築するのStringBuilderがおそらく最善の策です。

もちろん、それはあなたのニーズに依存します。メソッドの順序を変更せずにコードを生成したり、メソッドが定義された後にメソッドを変更したりするだけの場合は、コードを .xml で構築してStringBuilderからコンパイルするのが最も簡単な方法です。

于 2013-10-28T10:34:39.487 に答える