CodeDomProvider.GenerateCodeFromCompileUnit Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Genererar kod för den angivna Code Document Object Model-kompileringsenheten (CodeDOM) och skickar den till den angivna textskrivaren med hjälp av de angivna alternativen.
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)
Parametrar
- compileUnit
- CodeCompileUnit
A CodeCompileUnit som du vill generera kod för.
- writer
- TextWriter
Till TextWriter vilken utdatakoden skickas.
- options
- CodeGeneratorOptions
En CodeGeneratorOptions som anger vilka alternativ som ska användas för att generera kod.
Undantag
Varken den CreateGenerator() här metoden eller metoden åsidosättas i en härledd klass.
Exempel
I följande kodexempel visas användningen av metoden GenerateCodeFromCompileUnit för att generera kod för ett "Hello World"-program från en CodeCompileUnit. Det här exemplet är en del av ett större exempel som tillhandahålls CodeDomProvider för klassen.
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
Kommentarer
Note
I .NET Framework-versionerna 1.0 och 1.1 tillhandahålls den här metoden av implementeringen ICodeGenerator som returneras av metoden CreateGenerator för providern. I version 2.0 kan den här metoden anropas direkt på kodprovidern även om den inte åsidosätts av kodprovidern. Om kodprovidern inte åsidosätter den ICodeGenerator här metoden anropas implementeringen av basklassen.
Anteckningar till arvingar
Om du åsidosätter den här metoden får du inte anropa motsvarande metod för basklassen. Basklassmetoden skapar en generator i den härledda klassen med den föråldrade CreateGenerator() metoden för kompatibilitet med befintliga leverantörer som använder kodgeneratorer. Basklassmetoden anropar sedan motsvarande metod i implementeringen ICodeGenerator för att utföra den här funktionen. Du får en NotImplementedException om du anropar basklassmetoden från en kodprovider som inte använder en kodgenerator.