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 에서 "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 .

적용 대상

추가 정보