CodeDomProvider.GenerateCodeFromMember メソッド
アセンブリ: System (system.dll 内)

Public Overridable Sub GenerateCodeFromMember ( _ member As CodeTypeMember, _ writer As TextWriter, _ options As CodeGeneratorOptions _ )
Dim instance As CodeDomProvider Dim member As CodeTypeMember Dim writer As TextWriter Dim options As CodeGeneratorOptions instance.GenerateCodeFromMember(member, writer, options)
public virtual void GenerateCodeFromMember ( CodeTypeMember member, TextWriter writer, CodeGeneratorOptions options )
public: virtual void GenerateCodeFromMember ( CodeTypeMember^ member, TextWriter^ writer, CodeGeneratorOptions^ options )
public void GenerateCodeFromMember ( CodeTypeMember member, TextWriter writer, CodeGeneratorOptions options )
public function GenerateCodeFromMember ( member : CodeTypeMember, writer : TextWriter, options : CodeGeneratorOptions )
- writer
出力コードの送信先となる TextWriter。


基本クラスの実装では、NotImplementedException がスローされます。このメソッドの実装については、CSharpCodeProvider.GenerateCodeFromMember のトピックを参照してください。

CSharpCodeProvider クラスおよび VBCodeProvider クラスによって実装された GenerateCodeFromMember メソッドを使用する方法を次のコード例に示します。
Imports System Imports System.CodeDom Imports System.CodeDom.Compiler Imports System.IO Imports System.Text.RegularExpressions Class Program Private Shared providerName As String = "vb" Private Shared sourceFileName As String = "test.vb" Private Shared snippetMethod As CodeSnippetTypeMember Shared Sub Main(ByVal args() As String) Dim provider As CodeDomProvider = CodeDomProvider.CreateProvider(providerName) ' Create a code snippet to be used in the graph. GenCodeFromMember(provider, New CodeGeneratorOptions()) LogMessage("Building CodeDOM graph...") Dim cu As New CodeCompileUnit() cu = BuildClass1() Dim sw As New StringWriter() LogMessage("Generating code...") provider.GenerateCodeFromCompileUnit(cu, sw, Nothing) Dim output As String = sw.ToString() LogMessage("Dumping source...") LogMessage(output) LogMessage("Writing source to file...") Dim s As Stream = File.Open(sourceFileName, FileMode.Create) Dim t As New StreamWriter(s) t.Write(output) t.Close() s.Close() Dim opt As New CompilerParameters(New String() {"System.dll"}) opt.GenerateExecutable = False opt.OutputAssembly = "Sample.dll" Dim results As CompilerResults LogMessage(("Compiling with " + providerName)) results = provider.CompileAssemblyFromFile(opt, sourceFileName) OutputResults(results) If results.NativeCompilerReturnValue <> 0 Then LogMessage("") LogMessage("Compilation failed.") Else LogMessage("") LogMessage("Demo completed successfully.") End If File.Delete(sourceFileName) End Sub 'Main ' Build a library program graph using ' System.CodeDom types. Public Shared Function BuildClass1() As CodeCompileUnit ' Create a new CodeCompileUnit to contain ' the program graph. Dim compileUnit As New CodeCompileUnit() ' Declare a new namespace called Samples. Dim samples As New CodeNamespace("Samples") ' Add the new namespace to the compile unit. compileUnit.Namespaces.Add(samples) ' Add the new namespace import for the System namespace. samples.Imports.Add(New CodeNamespaceImport("System")) ' Declare a new type called Class1. Dim class1 As New CodeTypeDeclaration("Class1") ' Add the new type to the namespace type collection. samples.Types.Add(class1) class1.Members.Add(snippetMethod) Return compileUnit End Function 'BuildClass1 Shared Sub LogMessage(ByVal [text] As String) Console.WriteLine([text]) End Sub 'LogMessage Shared Sub OutputResults(ByVal results As CompilerResults) LogMessage(("NativeCompilerReturnValue=" + results.NativeCompilerReturnValue.ToString())) Dim s As String For Each s In results.Output LogMessage(s) Next s End Sub 'OutputResults Shared Sub GenCodeFromMember(ByVal provider As CodeDomProvider, ByVal options As CodeGeneratorOptions) options.BracingStyle = "C" Dim method1 As New CodeMemberMethod() method1.Name = "ReturnString" method1.Attributes = MemberAttributes.Public method1.ReturnType = New CodeTypeReference("System.String") method1.Parameters.Add(New CodeParameterDeclarationExpression("System.String", "text")) method1.Statements.Add(New CodeMethodReturnStatement(New CodeArgumentReferenceExpression("text"))) Dim sw As New StringWriter() provider.GenerateCodeFromMember(method1, sw, options) snippetMethod = New CodeSnippetTypeMember(sw.ToString()) End Sub 'GenCodeFromMember
using System; using System.CodeDom; using System.CodeDom.Compiler; using System.IO; using System.Text.RegularExpressions; namespace BasicCodeDomApp { class Program { static string providerName = "cs"; static string sourceFileName = "test.cs"; static CodeSnippetTypeMember snippetMethod; static void Main(string[] args) { CodeDomProvider provider = CodeDomProvider.CreateProvider(providerName); // Create a code snippet to be used in the graph. GenCodeFromMember(provider, new CodeGeneratorOptions()); LogMessage("Building CodeDOM graph..."); CodeCompileUnit cu = new CodeCompileUnit(); cu = BuildClass1(); StringWriter sw = new StringWriter(); LogMessage("Generating code..."); provider.GenerateCodeFromCompileUnit(cu, sw, null); string output = sw.ToString(); LogMessage("Dumping source..."); LogMessage(output); LogMessage("Writing source to file..."); Stream s = File.Open(sourceFileName, FileMode.Create); StreamWriter t = new StreamWriter(s); t.Write(output); t.Close(); s.Close(); CompilerParameters opt = new CompilerParameters(new string[]{ "System.dll" }); opt.GenerateExecutable = false; opt.OutputAssembly = "Sample.dll"; CompilerResults results; LogMessage("Compiling with " + providerName); results = provider.CompileAssemblyFromFile(opt, sourceFileName); OutputResults(results); if (results.NativeCompilerReturnValue != 0) { LogMessage(""); LogMessage("Compilation failed."); } else { LogMessage(""); LogMessage("Demo completed successfully."); } File.Delete(sourceFileName); } // Build a library program graph using // System.CodeDom types. public static CodeCompileUnit BuildClass1() { // Create a new CodeCompileUnit to contain // the program graph. CodeCompileUnit compileUnit = new CodeCompileUnit(); // Declare a new namespace called Samples. CodeNamespace samples = new CodeNamespace("Samples"); // Add the new namespace to the compile unit. compileUnit.Namespaces.Add(samples); // Add the new namespace import for the System namespace. samples.Imports.Add(new CodeNamespaceImport("System")); // Declare a new type called Class1. CodeTypeDeclaration class1 = new CodeTypeDeclaration("Class1"); // Add the new type to the namespace type collection. samples.Types.Add(class1); class1.Members.Add(snippetMethod); return compileUnit; } static void LogMessage(string text) { Console.WriteLine(text); } static void OutputResults(CompilerResults results) { LogMessage("NativeCompilerReturnValue=" + results.NativeCompilerReturnValue.ToString()); foreach (string s in results.Output) { LogMessage(s); } } static void GenCodeFromMember(CodeDomProvider provider, CodeGeneratorOptions options) { options.BracingStyle = "C"; CodeMemberMethod method1 = new CodeMemberMethod(); method1.Name = "ReturnString"; method1.Attributes = MemberAttributes.Public; method1.ReturnType = new CodeTypeReference("System.String"); method1.Parameters.Add(new CodeParameterDeclarationExpression("System.String", "text")); method1.Statements.Add(new CodeMethodReturnStatement(new CodeArgumentReferenceExpression("text"))); StringWriter sw = new StringWriter(); provider.GenerateCodeFromMember(method1, sw, options); snippetMethod = new CodeSnippetTypeMember(sw.ToString()); } } }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- CodeDomProvider.GenerateCodeFromMember メソッドのページへのリンク