CodeDomProvider.GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions) Metoda

Definicja

Generuje kod dla określonej jednostki kompilacji Code Document Object Model (CodeDOM) i wysyła ją do określonego składnika zapisywania tekstu przy użyciu określonych opcji.Generates code for the specified Code Document Object Model (CodeDOM) compilation unit and sends it to the specified text writer, using the specified options.

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)

Parametry

compileUnit
CodeCompileUnit

A, CodeCompileUnit dla którego ma zostać wygenerowany kod.A CodeCompileUnit for which to generate code.

writer
TextWriter

TextWriterDo którego zostanie wysłany kod wyjściowy.The TextWriter to which the output code is sent.

options
CodeGeneratorOptions

CodeGeneratorOptions, Który wskazuje opcje, które mają być używane do generowania kodu.A CodeGeneratorOptions that indicates the options to use for generating code.

Wyjątki

Żadna z tych metod ani CreateGenerator() Metoda nie została przesłonięta w klasie pochodnej.Neither this method nor the CreateGenerator() method is overridden in a derived class.

Przykłady

Poniższy przykład kodu pokazuje użycie GenerateCodeFromCompileUnit metody do generowania kodu dla aplikacji "Hello World" z CodeCompileUnit .The following code example shows the use of the GenerateCodeFromCompileUnit method to generate code for a "Hello World" application from a CodeCompileUnit. Ten przykład jest częścią większego przykładu dostarczonego dla CodeDomProvider klasy.This example is part of a larger example provided for the CodeDomProvider class.

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

Uwagi

Uwaga

W .NET Framework wersje 1,0 i 1,1 Ta metoda jest zapewniana przez ICodeGenerator implementację, która jest zwracana przez CreateGenerator metodę dostawcy.In the .NET Framework versions 1.0 and 1.1, this method is provided by the ICodeGenerator implementation that is returned by the CreateGenerator method of the provider. W wersji 2,0 tę metodę można wywołać bezpośrednio dla dostawcy kodu, nawet jeśli nie został on zastąpiony przez dostawcę kodu.In version 2.0, this method can be called directly on the code provider even if it is not overridden by the code provider. Jeśli dostawca kodu nie przesłania tej metody, ICodeGenerator implementacja jest wywoływana przez klasę bazową.If the code provider does not override this method, the ICodeGenerator implementation is called by the base class.

Uwagi dotyczące dziedziczenia

W przypadku zastąpienia tej metody nie należy wywoływać odpowiedniej metody klasy bazowej.If you override this method, you must not call the corresponding method of the base class. Metoda klasy bazowej tworzy generator w klasie pochodnej przy użyciu przestarzałej CreateGenerator() metody w celu zapewnienia zgodności z istniejącymi dostawcami, którzy używają generatorów kodu.The base-class method creates a generator in the derived class using the obsolete CreateGenerator() method for compatibility with preexisting providers that use code generators. Metoda klasy bazowej następnie wywołuje równoważną metodę w ICodeGenerator implementacji, aby wykonać tę funkcję.The base-class method then calls the equivalent method in the ICodeGenerator implementation to perform this function. Otrzymasz NotImplementedException wywołanie metody klasy bazowej od dostawcy kodu, który nie używa generatora kodu.You will get a NotImplementedException if you call the base-class method from a code provider that does not use a code generator.

Dotyczy

Zobacz też