CodeDomProvider.CreateProvider メソッド

定義

指定した言語の CodeDomProvider インスタンスを取得します。

オーバーロード

CreateProvider(String)

指定した言語の CodeDomProvider インスタンスを取得します。

CreateProvider(String, IDictionary<String,String>)

指定された言語オプションおよびプロバイダー オプションの CodeDomProvider インスタンスを取得します。

CreateProvider(String)

ソース:
CodeDomProvider.cs
ソース:
CodeDomProvider.cs
ソース:
CodeDomProvider.cs

指定した言語の CodeDomProvider インスタンスを取得します。

public:
 static System::CodeDom::Compiler::CodeDomProvider ^ CreateProvider(System::String ^ language);
public static System.CodeDom.Compiler.CodeDomProvider CreateProvider (string language);
[System.Runtime.InteropServices.ComVisible(false)]
public static System.CodeDom.Compiler.CodeDomProvider CreateProvider (string language);
static member CreateProvider : string -> System.CodeDom.Compiler.CodeDomProvider
[<System.Runtime.InteropServices.ComVisible(false)>]
static member CreateProvider : string -> System.CodeDom.Compiler.CodeDomProvider
Public Shared Function CreateProvider (language As String) As CodeDomProvider

パラメーター

language
String

言語名。

戻り値

指定した言語名に対して実装される CodeDOM プロバイダー。

属性

例外

このコンピューターには、language の構成済みのプロバイダーがありません。

languagenull です。

呼び出し元に、必要なアクセス許可がありません。

次のコード例では、入力言語の CodeDomProvider 実装を決定し、言語プロバイダーの構成済みの設定を表示します。 このコード例は、CompilerInfo クラスのために提供されている大規模な例の一部です。

CodeDomProvider^ provider = nullptr;

// Check for a provider corresponding to the input language.  
if ( CodeDomProvider::IsDefinedLanguage( language ) )
{
   provider = CodeDomProvider::CreateProvider( language );
   if ( provider )
   {
      // Display information about this language provider.
      Console::WriteLine( "Language provider:  {0}", provider->ToString() );
      Console::WriteLine();
      Console::WriteLine( "  Default file extension:  {0}", provider->FileExtension );
      Console::WriteLine();
      
      // Get the compiler settings for this language.
      CompilerInfo^ langCompilerInfo = CodeDomProvider::GetCompilerInfo( language );
      if ( langCompilerInfo )
      {
         CompilerParameters^ langCompilerConfig = langCompilerInfo->CreateDefaultCompilerParameters();
         if ( langCompilerConfig )
         {
            Console::WriteLine( "  Compiler options:        {0}", langCompilerConfig->CompilerOptions );
            Console::WriteLine( "  Compiler warning level:  {0}", langCompilerConfig->WarningLevel.ToString() );
         }
      }
   }
}

if ( provider == nullptr )  // Tell the user that the language provider was not found.
   Console::WriteLine(  "There is no provider configured for input language \"{0}\".", language );
CodeDomProvider provider;

// Check for a provider corresponding to the input language.
if (CodeDomProvider.IsDefinedLanguage(language))
{
    provider = CodeDomProvider.CreateProvider(language);

    // Display information about this language provider.

    Console.WriteLine("Language provider:  {0}",
        provider.ToString());
    Console.WriteLine();
    Console.WriteLine("  Default file extension:  {0}",
        provider.FileExtension);
    Console.WriteLine();

    // Get the compiler settings for this language.

    CompilerInfo langCompilerInfo = CodeDomProvider.GetCompilerInfo(language);
    CompilerParameters langCompilerConfig = langCompilerInfo.CreateDefaultCompilerParameters();

    Console.WriteLine("  Compiler options:        {0}",
        langCompilerConfig.CompilerOptions);
    Console.WriteLine("  Compiler warning level:  {0}",
        langCompilerConfig.WarningLevel);
}
else
{
    // Tell the user that the language provider was not found.
    Console.WriteLine("There is no provider configured for input language \"{0}\".",
        language);
}
Dim provider As CodeDomProvider

' Check for a provider corresponding to the input language.  
If CodeDomProvider.IsDefinedLanguage(language) Then
   provider = CodeDomProvider.CreateProvider(language)
   
   ' Display information about this language provider.
   Console.WriteLine("Language provider:  {0}", _
       provider.ToString())
   Console.WriteLine()
   Console.WriteLine("  Default file extension:  {0}", _
       provider.FileExtension)
   Console.WriteLine()
   
   ' Get the compiler settings for this language.
   Dim langCompilerInfo As CompilerInfo = CodeDomProvider.GetCompilerInfo(language)
   Dim langCompilerConfig As CompilerParameters = langCompilerInfo.CreateDefaultCompilerParameters()
   
   Console.WriteLine("  Compiler options:        {0}", _
       langCompilerConfig.CompilerOptions)
   Console.WriteLine("  Compiler warning level:  {0}", _
       langCompilerConfig.WarningLevel)
Else
   ' Tell the user that the language provider was not found.
   Console.WriteLine("There is no provider configured for input language ""{0}"".", _
       language)
End If

注釈

注意

このメソッドは、必要に応じて複数のプロバイダーのいずれかを使用できるアプリケーションでコード プロバイダーのインスタンスを作成するために最も一般的に使用されます。 CreateProvider では、インスタンス化するコード プロバイダーを実行時に指定できます。 デザイン時に使用するコード プロバイダーがわかっている場合は、 メソッドを使用するのではなく、そのコード プロバイダーのインスタンスを作成する CreateProvider 必要があります。

メソッドは CreateProvider 、特定の CodeDomProvider 言語名のインスタンスを返します。これは、言語プロバイダーの型を使用して メソッドを Activator.CreateInstance 呼び出すのと似ています。 言語名の構成済みプロバイダー実装を動的に検索する場合に使用 CreateProvider します。

言語名に対して複数のプロバイダー実装が構成されている場合は、 CreateProvider 最後に一致する構成要素のプロバイダー インスタンスを返します。

特定の言語プロバイダーの Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) 実装が必要な場合は、 メソッドオーバーロードを使用します。 たとえば、 メソッドを CreateProvider 使用して、言語名 "CSharp"をサポートするプロバイダー インスタンスを取得します。メソッド オーバーロードを Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) 使用して、実装専用のプロバイダー インスタンスを Microsoft.CSharp.CSharpCodeProvider 取得します。 1 つの言語に Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) 対して複数のコード プロバイダーがあり、特定のコード プロバイダーをインスタンス化する場合は、 メソッドを使用します。

メソッドは IsDefinedLanguage 、少なくとも 1 つのプロバイダー実装が特定の言語をサポートしているかどうかを確認します。 に渡す前に、 を使用して IsDefinedLanguage 言語名を CreateProvider検証できます。 サポートされていない言語名を にCreateProviderSystem.Configuration.ConfigurationException渡すと、 がスローされます。

メソッドをGetAllCompilerInfo使用すると、コンピューター構成ファイル (Machine.config) の system.codedom> 要素で<識別される開発者やコンパイラ ベンダーによって提供される追加の実装を含め、コンピューター上のすべてのCodeDomProvider実装を決定できます。

メソッドは CreateProvider 、特定の言語の実装の CodeDomProvider インスタンスを返します。

言語名では大文字と小文字は区別されません。

こちらもご覧ください

適用対象

CreateProvider(String, IDictionary<String,String>)

ソース:
CodeDomProvider.cs
ソース:
CodeDomProvider.cs
ソース:
CodeDomProvider.cs

指定された言語オプションおよびプロバイダー オプションの CodeDomProvider インスタンスを取得します。

public:
 static System::CodeDom::Compiler::CodeDomProvider ^ CreateProvider(System::String ^ language, System::Collections::Generic::IDictionary<System::String ^, System::String ^> ^ providerOptions);
public static System.CodeDom.Compiler.CodeDomProvider CreateProvider (string language, System.Collections.Generic.IDictionary<string,string> providerOptions);
[System.Runtime.InteropServices.ComVisible(false)]
public static System.CodeDom.Compiler.CodeDomProvider CreateProvider (string language, System.Collections.Generic.IDictionary<string,string> providerOptions);
static member CreateProvider : string * System.Collections.Generic.IDictionary<string, string> -> System.CodeDom.Compiler.CodeDomProvider
[<System.Runtime.InteropServices.ComVisible(false)>]
static member CreateProvider : string * System.Collections.Generic.IDictionary<string, string> -> System.CodeDom.Compiler.CodeDomProvider
Public Shared Function CreateProvider (language As String, providerOptions As IDictionary(Of String, String)) As CodeDomProvider

パラメーター

language
String

言語名。

providerOptions
IDictionary<String,String>

構成ファイルのプロバイダー オプションのコレクション。

戻り値

指定した言語名およびオプションに対して実装される CodeDOM プロバイダー。

属性

次の例は、 パラメーターを使用してプロバイダーのインスタンスを作成する方法を providerOptions 示しています。

using System;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using Microsoft.VisualBasic;
using System.Collections.Generic;

namespace ProviderOptions
{
    class Program
    {
        static void Main(string[] args)
        {
            DisplayCSharpCompilerInfo();
            DisplayVBCompilerInfo();
            Console.WriteLine("Press Enter key to exit.");
            Console.ReadLine();
        }
        static void DisplayCSharpCompilerInfo()
        {
            Dictionary<string, string> provOptions =
            new Dictionary<string, string>();

            provOptions.Add("CompilerVersion", "v4");
            // Get the provider for Microsoft.CSharp
            CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp", provOptions);

            // Display the C# language provider information.
            Console.WriteLine("CSharp provider is {0}",
                provider.ToString());
            Console.WriteLine("  Provider hash code:     {0}",
                provider.GetHashCode().ToString());
            Console.WriteLine("  Default file extension: {0}",
                provider.FileExtension);

            Console.WriteLine();
        }

        static void DisplayVBCompilerInfo()
        {
            Dictionary<string, string> provOptions =
            new Dictionary<string, string>();

            provOptions.Add("CompilerVersion", "v3.5");
            // Get the provider for Microsoft.VisualBasic
            CodeDomProvider provider = CodeDomProvider.CreateProvider("VisualBasic", provOptions);

            // Display the Visual Basic language provider information.
            Console.WriteLine("Visual Basic provider is {0}",
                provider.ToString());
            Console.WriteLine("  Provider hash code:     {0}",
                provider.GetHashCode().ToString());
            Console.WriteLine("  Default file extension: {0}",
                provider.FileExtension);

            Console.WriteLine();
        }
    }
}
Imports System.CodeDom.Compiler
Imports Microsoft.CSharp
Imports System.Collections.Generic



Class Program

    Shared Sub Main(ByVal args() As String)
        DisplayCSharpCompilerInfo()
        DisplayVBCompilerInfo()
        Console.WriteLine("Press Enter key to exit.")
        Console.ReadLine()

    End Sub

    Shared Sub DisplayCSharpCompilerInfo()
        Dim provOptions As New Dictionary(Of String, String)
        provOptions.Add("CompilerVersion", "v4")
        ' Get the provider for Microsoft.CSharp
        Dim provider As CodeDomProvider = CodeDomProvider.CreateProvider("CSharp", provOptions)

        ' Display the C# language provider information.
        Console.WriteLine("CSharp provider is {0}", provider.ToString())
        Console.WriteLine("  Provider hash code:     {0}", provider.GetHashCode().ToString())
        Console.WriteLine("  Default file extension: {0}", provider.FileExtension)

        Console.WriteLine()

    End Sub


    Shared Sub DisplayVBCompilerInfo()
        Dim provOptions As New Dictionary(Of String, String)
        provOptions.Add("CompilerVersion", "v3.5")
        ' Get the provider for Microsoft.VisualBasic
        Dim provider As CodeDomProvider = CodeDomProvider.CreateProvider("VisualBasic", provOptions)

        ' Display the Visual Basic language provider information.
        Console.WriteLine("Visual Basic provider is {0}", provider.ToString())
        Console.WriteLine("  Provider hash code:     {0}", provider.GetHashCode().ToString())
        Console.WriteLine("  Default file extension: {0}", provider.FileExtension)

        Console.WriteLine()

    End Sub
End Class

注釈

注意

このメソッドは、必要に応じて複数のプロバイダーのいずれかを使用できるアプリケーションでコード プロバイダーのインスタンスを作成するために最も一般的に使用されます。 CreateProvider(String, IDictionary<String,String>) を使用すると、インスタンス化するコード プロバイダーのバージョンを実行時に指定できます。 デザイン時に使用するコード プロバイダーがわかっている場合は、 メソッドを使用するのではなく、そのコード プロバイダーのインスタンスを作成する CreateProvider(String, IDictionary<String,String>) 必要があります。

特定の言語とオプションに対して構成されたプロバイダー実装を動的に検索する場合に使用 CreateProvider(String, IDictionary<String,String>) します。 言語名では大文字と小文字は区別されません。 サポートされているプロバイダー オプションの詳細については、特定の CodeDOM プロバイダーのドキュメントを参照してください。

プロバイダーの検証と、言語名に対して複数のプロバイダー実装が構成されている場合のプロバイダーの呼び出しについては、メソッドの「解説」セクションを CreateProvider(String) 参照してください。

適用対象