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 코드를 생성할 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 .