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 產生「Hello World」應用程式的程式碼。 此範例是本類別更大 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

備註

Note

在 .NET Framework 1.0 和 1.1 版本中,此方法由提供者的 CreateGenerator 方法回傳的 ICodeGenerator 實作提供。 在 2.0 版本中,即使程式碼提供者未覆蓋此方法,也能直接呼叫此方法。 若程式碼提供者未覆寫此方法,基底類別會呼叫實 ICodeGenerator 作。

給繼承者的注意事項

如果你覆寫此方法,則不得呼叫基底類別對應的方法。 基底類別方法在衍生類別中使用過時 CreateGenerator() 的方法建立產生器,以與使用程式碼產生器的既有提供者相容。 基底類別方法接著呼叫實作中的 ICodeGenerator 對應方法來執行此函式。 如果你從不使用程式碼產生器的程式碼提供者呼叫基底類方法,你會得到一個NotImplementedException

適用於

另請參閱