CodeDomProvider.GenerateCodeFromCompileUnit メソッド

定義

指定したコード ドキュメント オブジェクト モデル (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 が得られます。

適用対象

こちらもご覧ください