私はコードジェネレータを書いて、これらのコードをmvpパターンで保存したいのですが、解決策としてReflection.Emitを使うことができますか、CodeDomは良いですか?Reflection.Emitを使用してコードを生成し、生成されたコードを.csファイルに保存できますか、CodeDomを使用できますか?
EDIT --------------
私が最初に私は、実行時にこのコードをコンパイルして実行し、第二に、ソースコードを生成したい、2の作業を行う必要がありますオプション。
私はコードジェネレータを書いて、これらのコードをmvpパターンで保存したいのですが、解決策としてReflection.Emitを使うことができますか、CodeDomは良いですか?Reflection.Emitを使用してコードを生成し、生成されたコードを.csファイルに保存できますか、CodeDomを使用できますか?
EDIT --------------
私が最初に私は、実行時にこのコードをコンパイルして実行し、第二に、ソースコードを生成したい、2の作業を行う必要がありますオプション。
あなたは二つの異なる概念をミックスし、よりよいフィットというオプション(複数可)を使用することはできません両方の名前空間(System.CodeDomとSystem.Reflection.Emit)であなたの質問のいくつかの側面を達成することができますが、あなたがしたいことは何でも。
あなたはもしかしたらあなたはSystem.CodeDomに使用を行いたいC#の\のVBコードを生成し、コンパイルしたい場合:
この名前空間は にソースコード の構造をモデル化するために使用することができます ソースコードとして System.CodeDom.Compiler名前空間によって提供される 機能を使用して、サポートされる言語でコードとして出力することができます。
チェックのCodeDOMを通じてメソッドを定義する方法のこの小さな例:生成し、MSILを操作するために使用されるそのSystem.Reflection.Emitについては
// Defines a method that returns a string passed to it.
CodeMemberMethod method1 = new CodeMemberMethod();
method1.Name = "ReturnString";
method1.ReturnType = new CodeTypeReference("System.String");
method1.Parameters.Add(new CodeParameterDeclarationExpression("System.String", "text"));
method1.Statements.Add(new CodeMethodReturnStatement(new CodeArgumentReferenceExpression("text")));
// A C# code generator produces the following source code for the preceeding example code:
// private string ReturnString(string text)
// {
// return text;
// }
(マイクロソフト中級言語)は、Common Language Infrastructure仕様で定義され、.NET Frameworkで使用される最低レベルの人間が読めるプログラミング言語です。 MSILは今CIL(共通中間言語)として知られていることに注意してください:
System.Reflection.Emit名前空間 は、コンパイラ またはツールは、メタデータとマイクロソフト 中間言語(MSIL)を放出するためのクラスが含まれていると 必要に応じてディスク上にPEファイルを生成します。 これらのクラスのプライマリクライアント は、スクリプトエンジンとコンパイラです。
このアプローチを使用すると、アセンブリコードに精通していても、むしろ難しく複雑な作業であるCILバイトコードの手順を学ぶことができます。実装する。最初の印象については、CILとCIL instructions listに関するウィキペディアの記事をチェックしてください。
C#のソースコードを表示するオプションが必要な場合は、CodeDomを使用します。 Reflection.EmitはILをレンダリングしますが、それを使用可能なC#コードにするのは簡単ではありません。
私はdownvoteしませんでした。これは多くの人が持っている質問です。たぶん、生成しようとしているコードの種類(ソース、期待される出力)についてもっと詳しく理解しておくべきでしょう。また、T4テンプレートエンジンを見てください.hms://msdn.microsoft.com/en-us/library/bb126445.aspx –
ダウンボングの理由は何ですか? –
私は2つの作業を行う必要があります。まず、実行時にこのコードをコンパイルして実行し、次にオプションとしてソースコードを生成します。 –