CodeDomProvider.GenerateCodeFromMember メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > CodeDomProvider.GenerateCodeFromMember メソッドの意味・解説 

CodeDomProvider.GenerateCodeFromMember メソッド

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

指定した CodeDOM (Code Document Object Model) メンバ宣言コード生成し指定したオプション使用して指定したテキスト ライタ生成されコード送信します

名前空間: System.CodeDom.Compiler
アセンブリ: 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
)

パラメータ

member

コード生成対象となるメンバを示す CodeTypeMember オブジェクト

writer

出力コード送信先となる TextWriter

options

コード生成するために使用するオプションを示す CodeGeneratorOptions。

例外例外
例外種類条件

NotImplementedException

このメソッドは、派生クラスオーバーライドされません。

解説解説

基本クラス実装では、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());
        }

    }
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
CodeDomProvider クラス
CodeDomProvider メンバ
System.CodeDom.Compiler 名前空間
TextWriter
CodeTypeMember クラス
CodeGeneratorOptions



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

CodeDomProvider.GenerateCodeFromMember メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



CodeDomProvider.GenerateCodeFromMember メソッドのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS