次の方法で共有


CodeDomProvider.GenerateCodeFromCompileUnit メソッド

定義

指定した CodeDOM (Code Document Object Model) コンパイル単位のコードを生成し、指定したオプションを使用して、指定したテキスト ライターに生成されたコードを送信します。

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使用して、 から "Hello World" アプリケーションのコードを生成する方法をCodeCompileUnit示しています。 この例は、 クラスに対して提供されるより大きな例の CodeDomProvider 一部です。

static void GenerateCode( CodeDomProvider^ provider, CodeCompileUnit^ compileunit )
{
    // Build the source file name with the appropriate
    // language extension.
    String^ sourceFile;
    if ( provider->FileExtension->StartsWith( "." ) )
    {
        sourceFile = String::Concat( "TestGraph", provider->FileExtension );
    }
    else
    {
        sourceFile = String::Concat( "TestGraph.", provider->FileExtension );
    }

    // Create an IndentedTextWriter, constructed with
    // a StreamWriter to the source file.
    IndentedTextWriter^ tw = gcnew IndentedTextWriter( gcnew StreamWriter( sourceFile,false ),"    " );

    // Generate source code using the code generator.
    provider->GenerateCodeFromCompileUnit( compileunit, tw, gcnew CodeGeneratorOptions );

    // Close the output file.
    tw->Close();
}
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

注釈

注意

.NET Framework バージョン 1.0 および 1.1 では、このメソッドはプロバイダーの ICodeGenerator メソッドによって返される実装によってCreateGenerator提供されます。 バージョン 2.0 では、コード プロバイダーによってオーバーライドされていない場合でも、このメソッドをコード プロバイダーで直接呼び出すことができます。 コード プロバイダーがこのメソッドをオーバーライドしない場合、 ICodeGenerator 実装は基底クラスによって呼び出されます。

注意 (継承者)

このメソッドをオーバーライドする場合は、基底クラスの対応するメソッドを呼び出してはなりません。 基底クラス メソッドは、コード ジェネレーターを使用する既存のプロバイダーとの互換性のために、古い CreateGenerator() メソッドを使用して派生クラスにジェネレーターを作成します。 その後、基底クラス メソッドは、実装内の同等のメソッドを ICodeGenerator 呼び出して、この関数を実行します。 コード ジェネレーターを NotImplementedException 使用しないコード プロバイダーから基底クラス メソッドを呼び出すと、 が取得されます。

適用対象

こちらもご覧ください