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입니다.
- 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 .
적용 대상
추가 정보
.NET