CodeDomProvider.GenerateCodeFromCompileUnit メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したコード ドキュメント オブジェクト モデル (CodeDOM) コンパイル ユニットのコードを生成し、指定したオプションを使用して、指定したテキスト ライターに送信します。
public:
virtual void GenerateCodeFromCompileUnit(System::CodeDom::CodeCompileUnit ^ compileUnit, System::IO::TextWriter ^ writer, System::CodeDom::Compiler::CodeGeneratorOptions ^ options);
public virtual void GenerateCodeFromCompileUnit(System.CodeDom.CodeCompileUnit compileUnit, System.IO.TextWriter writer, System.CodeDom.Compiler.CodeGeneratorOptions options);
abstract member GenerateCodeFromCompileUnit : System.CodeDom.CodeCompileUnit * System.IO.TextWriter * System.CodeDom.Compiler.CodeGeneratorOptions -> unit
override this.GenerateCodeFromCompileUnit : System.CodeDom.CodeCompileUnit * System.IO.TextWriter * System.CodeDom.Compiler.CodeGeneratorOptions -> unit
Public Overridable Sub GenerateCodeFromCompileUnit (compileUnit As CodeCompileUnit, writer As TextWriter, options As CodeGeneratorOptions)
パラメーター
- compileUnit
- CodeCompileUnit
コードを生成する CodeCompileUnit 。
- writer
- TextWriter
出力コードの送信先となる TextWriter 。
- options
- CodeGeneratorOptions
コードの生成に使用するオプションを示す CodeGeneratorOptions 。
例外
このメソッドも CreateGenerator() メソッドも、派生クラスではオーバーライドされません。
例
次のコード例は、GenerateCodeFromCompileUnit メソッドを使用して、CodeCompileUnitから "Hello World" アプリケーションのコードを生成する方法を示しています。 この例は、 CodeDomProvider クラスに提供されるより大きな例の一部です。
public static void GenerateCode(CodeDomProvider provider,
CodeCompileUnit compileunit)
{
// Build the source file name with the appropriate
// language extension.
String sourceFile;
if (provider.FileExtension[0] == '.')
{
sourceFile = "TestGraph" + provider.FileExtension;
}
else
{
sourceFile = "TestGraph." + provider.FileExtension;
}
// Create an IndentedTextWriter, constructed with
// a StreamWriter to the source file.
IndentedTextWriter tw = new IndentedTextWriter(new StreamWriter(sourceFile, false), " ");
// Generate source code using the code generator.
provider.GenerateCodeFromCompileUnit(compileunit, tw, new CodeGeneratorOptions());
// Close the output file.
tw.Close();
}
Public Shared Sub GenerateCode(ByVal provider As CodeDomProvider, ByVal compileunit As CodeCompileUnit)
' Build the source file name with the appropriate
' language extension.
Dim sourceFile As String
If provider.FileExtension.StartsWith(".") Then
sourceFile = "TestGraph" + provider.FileExtension
Else
sourceFile = "TestGraph." + provider.FileExtension
End If
' Create an IndentedTextWriter, constructed with
' a StreamWriter to the source file.
Dim tw As New IndentedTextWriter(New StreamWriter(sourceFile, False), " ")
' Generate source code using the code generator.
provider.GenerateCodeFromCompileUnit(compileunit, tw, New CodeGeneratorOptions())
' Close the output file.
tw.Close()
End Sub
注釈
Note
.NET Framework バージョン 1.0 および 1.1 では、このメソッドは、プロバイダーの CreateGenerator メソッドによって返される ICodeGenerator 実装によって提供されます。 バージョン 2.0 では、コード プロバイダーによってオーバーライドされていない場合でも、このメソッドをコード プロバイダーで直接呼び出すことができます。 コード プロバイダーがこのメソッドをオーバーライドしない場合、 ICodeGenerator 実装は基底クラスによって呼び出されます。
注意 (継承者)
このメソッドをオーバーライドする場合は、基底クラスの対応するメソッドを呼び出してはなりません。 基底クラス メソッドは、コード ジェネレーターを使用する既存のプロバイダーとの互換性のために、古い CreateGenerator() メソッドを使用して派生クラスにジェネレーターを作成します。 その後、基底クラス メソッドは、 ICodeGenerator 実装内の同等のメソッドを呼び出して、この関数を実行します。 コード ジェネレーターを使用しないコード プロバイダーから基底クラス メソッドを呼び出すと、 NotImplementedException が得られます。