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 코드를 생성할 A입니다.

writer
TextWriter

TextWriter 출력 코드가 전송되는 값입니다.

options
CodeGeneratorOptions

코드를 생성하는 데 사용할 옵션을 나타내는 A CodeGeneratorOptions 입니다.

예외

이 메서드나 CreateGenerator() 메서드는 파생 클래스에서 재정의되지 않습니다.

예제

다음 코드 예제에서는 GenerateCodeFromCompileUnit 메서드를 사용하여 CodeCompileUnit "헬로 월드" 애플리케이션에 대한 코드를 생성하는 방법을 보여줍니다. 이 예제는 클래스에 제공된 더 큰 예제의 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

설명

메모

.NET Framework 버전 1.0 및 1.1에서 이 메서드는 공급자의 CreateGenerator 메서드에서 반환되는 ICodeGenerator 구현에서 제공됩니다. 버전 2.0에서 이 메서드는 코드 공급자가 재정의하지 않더라도 코드 공급자에서 직접 호출할 수 있습니다. 코드 공급자가 이 메서드를 재정의 ICodeGenerator 하지 않으면 기본 클래스에서 구현을 호출합니다.

상속자 참고

이 메서드를 재정의하는 경우 기본 클래스의 해당 메서드를 호출해서는 안 됩니다. 기본 클래스 메서드는 코드 생성기를 사용하는 기존 공급자와의 호환성을 위해 사용되지 않는 CreateGenerator() 메서드를 사용하여 파생 클래스에 생성기를 만듭니다. 그런 다음 기본 클래스 메서드는 구현에서 해당 메서드를 ICodeGenerator 호출하여 이 함수를 수행합니다. 코드 생성기를 사용하지 않는 코드 공급자에서 기본 클래스 메서드를 호출하는 경우를 가져옵니다 NotImplementedException .

적용 대상

추가 정보