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 для создания кода для приложения Hello World из CodeCompileUnit. Этот пример является частью более крупного примера, предоставленного 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 этот метод предоставляется реализацией ICodeGenerator, возвращаемой методом CreateGenerator поставщика. В версии 2.0 этот метод можно вызывать непосредственно в поставщике кода, даже если он не переопределяется поставщиком кода. Если поставщик кода не переопределяет этот метод, ICodeGenerator реализация вызывается базовым классом.
Примечания для тех, кто наследует этот метод
При переопределении этого метода не следует вызывать соответствующий метод базового класса. Метод базового класса создает генератор в производном классе с помощью устаревшего CreateGenerator() метода для совместимости с превысящими поставщиками, использующими генераторы кода. Затем метод базового класса вызывает эквивалентный метод в ICodeGenerator реализации для выполнения этой функции. NotImplementedException При вызове метода базового класса от поставщика кода, который не использует генератор кода.