CodeDomProvider.CreateProvider Metodo

Definizione

Ottiene un'istanza CodeDomProvider per la lingua specificata.

Overload

Nome Descrizione
CreateProvider(String)

Ottiene un'istanza CodeDomProvider per la lingua specificata.

CreateProvider(String, IDictionary<String,String>)

Ottiene un'istanza CodeDomProvider per la lingua e le opzioni del provider specificate.

CreateProvider(String)

Ottiene un'istanza CodeDomProvider per la lingua specificata.

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

Parametri

language
String

Nome della lingua.

Valori restituiti

Provider CodeDOM implementato per il nome di lingua specificato.

Attributi

Eccezioni

Non language dispone di un provider configurato in questo computer.

Il language è null.

Il chiamante non dispone dell'autorizzazione richiesta.

Esempio

Nell'esempio di codice seguente viene determinata l'implementazione CodeDomProvider di una lingua di input e vengono visualizzate le impostazioni configurate per il provider di linguaggio. Questo esempio di codice fa parte di un esempio più ampio fornito per la 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

Commenti

Note

Questo metodo viene usato più comunemente per creare un'istanza di un provider di codice in un'applicazione che può facoltativamente usare uno dei diversi provider. CreateProvider consente di specificare in fase di esecuzione il provider di codice di cui si vuole creare un'istanza. Se si conosce in fase di progettazione quale provider di codice deve essere usato, è necessario creare un'istanza del provider di codice anziché usare il CreateProvider metodo .

Il CreateProvider metodo restituisce un'istanza CodeDomProvider per un nome di lingua specifico. È simile alla chiamata al Activator.CreateInstance metodo con il tipo di provider di linguaggio. Usare CreateProvider quando si desidera trovare in modo dinamico un'implementazione del provider configurata per un nome di lingua.

Se più implementazioni del provider sono configurate per il nome della lingua, CreateProvider restituisce un'istanza del provider per l'ultimo elemento di configurazione corrispondente.

Usare l'overload del Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) metodo quando si vuole un'implementazione specifica del provider di linguaggio. Ad esempio, usare il metodo CreateProvider per ottenere un'istanza del provider che supporta il nome della lingua "CSharp"; usare l'overload del metodo Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) per ottenere un'istanza del provider specificamente per l'implementazione di Microsoft.CSharp.CSharpCodeProvider. Usare il Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) metodo se si dispone di più provider di codice per un linguaggio e si desidera creare un'istanza di un provider di codice specifico.

Il IsDefinedLanguage metodo verifica se almeno un'implementazione del provider supporta un linguaggio specifico. È possibile convalidare un nome di lingua usando IsDefinedLanguage prima di passarlo a CreateProvider. Se si passa un nome di lingua non supportato a CreateProvider viene generata un'eccezione System.Configuration.ConfigurationException .

Il GetAllCompilerInfo metodo può essere usato per determinare tutte le CodeDomProvider implementazioni in un computer, incluse le implementazioni aggiuntive fornite dagli sviluppatori e dai fornitori del compilatore identificati nell'elemento< system.codedom> nel file di configurazione del computer (Machine.config).

Il CreateProvider metodo restituisce un'istanza di un'implementazione CodeDomProvider per un linguaggio specifico.

I nomi delle lingue non fanno distinzione tra maiuscole e minuscole.

Vedi anche

Si applica a

CreateProvider(String, IDictionary<String,String>)

Ottiene un'istanza CodeDomProvider per la lingua e le opzioni del provider specificate.

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

Parametri

language
String

Nome della lingua.

providerOptions
IDictionary<String,String>

Raccolta di opzioni del provider dal file di configurazione.

Valori restituiti

Provider CodeDOM implementato per il nome e le opzioni della lingua specificati.

Attributi

Esempio

Nell'esempio seguente viene illustrato come creare un'istanza di un provider usando il providerOptions parametro .

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

Commenti

Note

Questo metodo viene usato più comunemente per creare un'istanza di un provider di codice in un'applicazione che può facoltativamente usare uno dei diversi provider. CreateProvider(String, IDictionary<String,String>) consente di specificare in fase di esecuzione la versione del provider di codice di cui si vuole creare un'istanza. Se si conosce in fase di progettazione quale provider di codice deve essere usato, è necessario creare un'istanza del provider di codice anziché usare il CreateProvider(String, IDictionary<String,String>) metodo .

Usare CreateProvider(String, IDictionary<String,String>) quando si vuole trovare in modo dinamico un'implementazione del provider configurata per un linguaggio e opzioni specifici. I nomi delle lingue non fanno distinzione tra maiuscole e minuscole. Per informazioni sulle opzioni del provider supportate, vedere la documentazione specifica del provider CodeDOM.

Per informazioni sulla convalida di un provider e sulla chiamata di un provider se sono configurate più implementazioni del provider per il nome della lingua, vedere la sezione Osservazioni del CreateProvider(String) metodo .

Si applica a