CodeDomProvider.GenerateCodeFromCompileUnit メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定した CodeDOM (Code Document Object Model) コンパイル単位のコードを生成し、指定したオプションを使用して、指定したテキスト ライターに生成されたコードを送信します。
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。
- writer
- TextWriter
出力コードの送信先となる TextWriter。
- options
- CodeGeneratorOptions
コードを生成するために使用するオプションを示す CodeGeneratorOptions。
例外
このメソッドと CreateGenerator() メソッドは、いずれも派生クラスでオーバーライドされません。
例
次のコード例は、 メソッドをGenerateCodeFromCompileUnit使用して、 から "Hello World" アプリケーションのコードを生成する方法をCodeCompileUnit示しています。 この例は、 クラスに対して提供されるより大きな例の CodeDomProvider 一部です。
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
注釈
注意
.NET Framework バージョン 1.0 および 1.1 では、このメソッドはプロバイダーの ICodeGenerator メソッドによって返される実装によってCreateGenerator提供されます。 バージョン 2.0 では、コード プロバイダーによってオーバーライドされていない場合でも、このメソッドをコード プロバイダーで直接呼び出すことができます。 コード プロバイダーがこのメソッドをオーバーライドしない場合、 ICodeGenerator 実装は基底クラスによって呼び出されます。
注意 (継承者)
このメソッドをオーバーライドする場合は、基底クラスの対応するメソッドを呼び出してはなりません。 基底クラス メソッドは、コード ジェネレーターを使用する既存のプロバイダーとの互換性のために、古い CreateGenerator() メソッドを使用して派生クラスにジェネレーターを作成します。 その後、基底クラス メソッドは、実装内の同等のメソッドを ICodeGenerator 呼び出して、この関数を実行します。 コード ジェネレーターを NotImplementedException 使用しないコード プロバイダーから基底クラス メソッドを呼び出すと、 が取得されます。
適用対象
こちらもご覧ください
.NET