Partilhar via


CodeDomProvider.CreateProvider Método

Definição

Obtém uma instância CodeDomProvider para o idioma especificado.

Sobrecargas

CreateProvider(String)

Obtém uma instância CodeDomProvider para o idioma especificado.

CreateProvider(String, IDictionary<String,String>)

Obtém uma instância CodeDomProvider para as opções de idioma e provedor especificadas.

CreateProvider(String)

Origem:
CodeDomProvider.cs
Origem:
CodeDomProvider.cs
Origem:
CodeDomProvider.cs

Obtém uma instância CodeDomProvider para o idioma especificado.

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

Parâmetros

language
String

O nome do idioma.

Retornos

Um provedor CodeDOM implementado para o nome do idioma especificado.

Atributos

Exceções

O language não tem um provedor configurado neste computador.

O language é null.

O chamador não tem a permissão necessária.

Exemplos

O exemplo de código a seguir determina a CodeDomProvider implementação de um idioma de entrada e exibe as configurações definidas para o provedor de idiomas. Este exemplo de código faz parte de um exemplo maior fornecido para a CompilerInfo classe .

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

Comentários

Observação

Esse método é mais comumente usado para criar uma instância de um provedor de código em um aplicativo que, opcionalmente, pode usar um dos vários provedores. CreateProvider permite especificar em tempo de execução o provedor de código que você deseja instanciar. Se você souber em tempo de design qual provedor de código deve ser usado, crie uma instância desse provedor de código em vez de usar o CreateProvider método .

O CreateProvider método retorna uma CodeDomProvider instância para um nome de idioma específico; é semelhante a chamar o Activator.CreateInstance método com o tipo de provedor de idioma. Use CreateProvider quando quiser localizar dinamicamente uma implementação de provedor configurada para um nome de idioma.

Se mais de uma implementação de provedor estiver configurada para o nome do idioma, CreateProvider retornará uma instância de provedor para o último elemento de configuração correspondente.

Use a sobrecarga do Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) método quando quiser uma implementação específica do provedor de idiomas. Por exemplo, use o CreateProvider método para obter uma instância de provedor que dê suporte ao nome "CSharp"do idioma ; use a sobrecarga do Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) método para obter uma instância de provedor especificamente para a Microsoft.CSharp.CSharpCodeProvider implementação. Use o Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) método se você tiver vários provedores de código para um idioma e desejar instanciar um provedor de código específico.

O IsDefinedLanguage método verifica se pelo menos uma implementação de provedor dá suporte a um idioma específico. Você pode validar um nome de idioma usando IsDefinedLanguage antes de passá-lo para CreateProvider. Se você passar um nome de idioma sem suporte para CreateProvider um System.Configuration.ConfigurationException é gerado.

O GetAllCompilerInfo método pode ser usado para determinar todas as CodeDomProvider implementações em um computador, incluindo implementações adicionais fornecidas por desenvolvedores e fornecedores do compilador que são identificados no <Elemento system.codedom> no arquivo de configuração do computador (Machine.config).

O CreateProvider método retorna uma instância de uma CodeDomProvider implementação para um idioma específico.

Nomes de idioma não diferenciam maiúsculas de minúsculas.

Confira também

Aplica-se a

CreateProvider(String, IDictionary<String,String>)

Origem:
CodeDomProvider.cs
Origem:
CodeDomProvider.cs
Origem:
CodeDomProvider.cs

Obtém uma instância CodeDomProvider para as opções de idioma e provedor especificadas.

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

Parâmetros

language
String

O nome do idioma.

providerOptions
IDictionary<String,String>

Uma coleção de opções do provedor do arquivo de configuração.

Retornos

Um provedor CodeDOM implementado para as opções e o nome do idioma especificados.

Atributos

Exemplos

O exemplo a seguir mostra como criar uma instância de um provedor 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

Comentários

Observação

Esse método é mais comumente usado para criar uma instância de um provedor de código em um aplicativo que, opcionalmente, pode usar um dos vários provedores. CreateProvider(String, IDictionary<String,String>) permite especificar em tempo de execução a versão do provedor de código que você deseja instanciar. Se você souber em tempo de design qual provedor de código deve ser usado, crie uma instância desse provedor 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 provedor configurada para um idioma e opções específicos. Nomes de idioma não diferenciam maiúsculas de minúsculas. Para obter informações sobre as opções de provedor com suporte, consulte a documentação específica do provedor CodeDOM.

Para obter informações sobre como validar um provedor e chamar um provedor se mais de uma implementação de provedor estiver configurada para o nome do idioma, consulte a seção Comentários do CreateProvider(String) método .

Aplica-se a