CodeDomProvider.CreateProvider Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém uma CodeDomProvider instância para a linguagem especificada.
Sobrecargas
| Name | Description |
|---|---|
| CreateProvider(String) |
Obtém uma CodeDomProvider instância para a linguagem especificada. |
| CreateProvider(String, IDictionary<String,String>) |
Obtém uma CodeDomProvider instância para a língua especificada e as opções do fornecedor. |
CreateProvider(String)
Obtém uma CodeDomProvider instância para a linguagem especificada.
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
Parâmetros
- language
- String
O nome do idioma.
Devoluções
Um fornecedor CodeDOM implementado para o nome da linguagem especificado.
- Atributos
Exceções
Não language tem um fornecedor configurado neste computador.
O language é null.
O interlocutor não tem a permissão necessária.
Exemplos
O seguinte exemplo de código determina a CodeDomProvider implementação para uma linguagem de entrada e apresenta as definições configuradas para o fornecedor da linguagem. Este exemplo de código faz parte de um exemplo maior fornecido para a CompilerInfo classe.
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
Observações
Note
Este método é mais frequentemente usado para criar uma instância de um fornecedor de código numa aplicação que pode opcionalmente usar um de vários fornecedores. CreateProvider permite-lhe especificar em tempo de execução o fornecedor de código que pretende instanciar. Se souber, no momento do design, qual fornecedor de código será usado, deve criar uma instância desse fornecedor de código em vez de usar o CreateProvider método.
O CreateProvider método devolve uma CodeDomProvider instância para um nome de linguagem específico; é semelhante a chamar o Activator.CreateInstance método com o tipo de fornecedor de linguagem. Use CreateProvider quando quiser encontrar dinamicamente uma implementação de fornecedor configurada para um nome de linguagem.
Se mais do que uma implementação de fornecedor estiver configurada para o nome da linguagem, retorna CreateProvider uma instância de fornecedor para o último elemento de configuração correspondente.
Use a Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) sobrecarga de métodos quando quiser uma implementação específica de um fornecedor de linguagem. Por exemplo, use o método CreateProvider para obter uma instância de fornecedor que suporte o nome da linguagem "CSharp"; Use o método Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) overload para obter uma instância de fornecedor especificamente para a implementação Microsoft.CSharp.CSharpCodeProvider. Use o Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) método se tiver vários fornecedores de código para uma linguagem e quiser instanciar um fornecedor de código específico.
O IsDefinedLanguage método verifica se pelo menos uma implementação de fornecedor suporta uma linguagem específica. Pode validar um nome de língua usando IsDefinedLanguage antes de o passar para CreateProvider. Se passar uma língua não suportada, o System.Configuration.ConfigurationException nome CreateProvider é lançado.
O GetAllCompilerInfo método pode ser usado para determinar todas CodeDomProvider as implementações num computador, incluindo implementações adicionais fornecidas por programadores e fornecedores de compiladores que são identificadas no <elemento system.codedom> no ficheiro de configuração da máquina (Machine.config).
O CreateProvider método devolve uma instância de uma CodeDomProvider implementação para uma linguagem específica.
Os nomes das línguas são indiferentes a maiúsculas e maiúsculas.
Ver também
Aplica-se a
CreateProvider(String, IDictionary<String,String>)
Obtém uma CodeDomProvider instância para a língua especificada e as opções do fornecedor.
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
Parâmetros
- language
- String
O nome do idioma.
- providerOptions
- IDictionary<String,String>
Uma coleção de opções de fornecedor do ficheiro de configuração.
Devoluções
Um fornecedor CodeDOM implementado para o nome e opções da linguagem especificadas.
- Atributos
Exemplos
O exemplo seguinte mostra como criar uma instância de um fornecedor usando o providerOptions parâmetro.
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
Observações
Note
Este método é mais frequentemente usado para criar uma instância de um fornecedor de código numa aplicação que pode opcionalmente usar um de vários fornecedores. CreateProvider(String, IDictionary<String,String>) Permite-te especificar em tempo de execução a versão do fornecedor de código que queres instanciar. Se souberes no momento do design qual o fornecedor de código a usar, deves criar uma instância desse fornecedor de código em vez de usar o CreateProvider(String, IDictionary<String,String>) método.
Use CreateProvider(String, IDictionary<String,String>) quando quiser encontrar dinamicamente uma implementação de fornecedor configurada para uma linguagem específica e opções. Os nomes das línguas são indiferentes a maiúsculas e maiúsculas. Para informações sobre as opções de fornecedores suportadas, consulte a documentação específica do fornecedor CodeDOM.
Para informações sobre como validar um fornecedor e chamar um fornecedor se mais do que uma implementação de fornecedor estiver configurada para o nome da linguagem, consulte a secção Observações do CreateProvider(String) método.