CodeDomProvider.CreateProvider メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定した言語の CodeDomProvider インスタンスを取得します。
オーバーロード
| 名前 | 説明 |
|---|---|
| CreateProvider(String) |
指定した言語の CodeDomProvider インスタンスを取得します。 |
| CreateProvider(String, IDictionary<String,String>) |
指定した言語およびプロバイダー オプションの CodeDomProvider インスタンスを取得します。 |
CreateProvider(String)
指定した言語の CodeDomProvider インスタンスを取得します。
public:
static System::CodeDom::Compiler::CodeDomProvider ^ CreateProvider(System::String ^ language);
[System.Runtime.InteropServices.ComVisible(false)]
public static System.CodeDom.Compiler.CodeDomProvider CreateProvider(string language);
[<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には、このコンピューターにプロバイダーが構成されていません。
language は null です。
呼び出し元に必要なアクセス許可がありません。
例
次のコード例では、入力言語の CodeDomProvider 実装を決定し、言語プロバイダーの構成済みの設定を表示します。 このコード例は、 CompilerInfo クラスに提供されるより大きな例の一部です。
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
注釈
Note
このメソッドは、必要に応じて複数のプロバイダーのいずれかを使用できるアプリケーションでコード プロバイダーのインスタンスを作成するために最も一般的に使用されます。 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 つのプロバイダー実装が特定の言語をサポートしているかどうかを確認します。 CreateProviderに渡す前に、IsDefinedLanguageを使用して言語名を検証できます。 サポートされていない言語名を渡して CreateProvider すると、 System.Configuration.ConfigurationException がスローされます。
GetAllCompilerInfo メソッドを使用すると、コンピューター上のすべてのCodeDomProvider実装を決定できます。これには、コンピューター構成ファイル (Machine.config) の <system.codedom> 要素で識別される開発者やコンパイラ ベンダーによって提供される追加の実装が含まれます。
CreateProvider メソッドは、特定の言語のCodeDomProvider実装のインスタンスを返します。
言語名では大文字と小文字が区別されません。
こちらもご覧ください
適用対象
CreateProvider(String, IDictionary<String,String>)
指定した言語およびプロバイダー オプションの CodeDomProvider インスタンスを取得します。
public:
static System::CodeDom::Compiler::CodeDomProvider ^ CreateProvider(System::String ^ language, System::Collections::Generic::IDictionary<System::String ^, System::String ^> ^ providerOptions);
[System.Runtime.InteropServices.ComVisible(false)]
public static System.CodeDom.Compiler.CodeDomProvider CreateProvider(string language, System.Collections.Generic.IDictionary<string,string> providerOptions);
[<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
注釈
Note
このメソッドは、必要に応じて複数のプロバイダーのいずれかを使用できるアプリケーションでコード プロバイダーのインスタンスを作成するために最も一般的に使用されます。 CreateProvider(String, IDictionary<String,String>) を使用すると、インスタンス化するコード プロバイダーのバージョンを実行時に指定できます。 設計時に使用するコード プロバイダーがわかっている場合は、 CreateProvider(String, IDictionary<String,String>) メソッドを使用するのではなく、そのコード プロバイダーのインスタンスを作成する必要があります。
特定の言語とオプションに対して構成されたプロバイダー実装を動的に検索する場合は、 CreateProvider(String, IDictionary<String,String>) を使用します。 言語名では大文字と小文字が区別されません。 サポートされているプロバイダー オプションの詳細については、特定の CodeDOM プロバイダーのドキュメントを参照してください。
言語名に対して複数のプロバイダー実装が構成されている場合のプロバイダーの検証とプロバイダーの呼び出しについては、 CreateProvider(String) メソッドの「解説」セクションを参照してください。