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

要为其生成代码的 A CodeCompileUnit

writer
TextWriter

TextWriter向其发送输出代码。

options
CodeGeneratorOptions

指示 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

注解

注释

在 .NET Framework 版本 1.0 和 1.1 中,此方法由提供程序的 ICodeGenerator 方法返回的 CreateGenerator 实现提供。 在版本 2.0 中,即使代码提供程序未重写此方法,也可以直接在代码提供程序上调用此方法。 如果代码提供程序未重写此方法,则 ICodeGenerator 基类将调用实现。

继承者说明

如果重写此方法,则不得调用基类的相应方法。 基类方法使用已过时 CreateGenerator() 的方法在派生类中创建生成器,以便与使用代码生成器的预先存在的提供程序兼容。 然后,基类方法调用实现中的 ICodeGenerator 等效方法来执行此函数。 如果从不使用代码生成器的代码提供程序调用基类方法,你将获得该 NotImplementedException 方法。

适用于

另请参阅