CodeDomProvider.CreateProvider Metoda

Definicja

CodeDomProvider Pobiera wystąpienie dla określonego języka.

Przeciążenia

CreateProvider(String)

CodeDomProvider Pobiera wystąpienie dla określonego języka.

CreateProvider(String, IDictionary<String,String>)

CodeDomProvider Pobiera wystąpienie dla określonych opcji języka i dostawcy.

CreateProvider(String)

Źródło:
CodeDomProvider.cs
Źródło:
CodeDomProvider.cs
Źródło:
CodeDomProvider.cs

CodeDomProvider Pobiera wystąpienie dla określonego języka.

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

Parametry

language
String

Nazwa języka.

Zwraca

Dostawca CodeDOM, który jest implementowany dla określonej nazwy języka.

Atrybuty

Wyjątki

Na language tym komputerze nie ma skonfigurowanego dostawcy.

Element language to null.

Obiekt wywołujący nie posiada wymaganych uprawnień.

Przykłady

Poniższy przykład kodu określa implementację CodeDomProvider języka wejściowego i wyświetla skonfigurowane ustawienia dostawcy języka. Ten przykład kodu jest częścią większego przykładu podanego CompilerInfo dla klasy.

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

Uwagi

Uwaga

Ta metoda jest najczęściej używana do tworzenia wystąpienia dostawcy kodu w aplikacji, która może opcjonalnie używać jednego z kilku dostawców. CreateProvider umożliwia określenie w czasie wykonywania dostawcy kodu, który chcesz utworzyć wystąpienie. Jeśli wiesz w czasie projektowania, który dostawca kodu ma być używany, należy utworzyć wystąpienie tego dostawcy kodu, a nie użyć CreateProvider metody .

Metoda CreateProvider zwraca CodeDomProvider wystąpienie dla określonej nazwy języka. Jest ona podobna do wywoływania Activator.CreateInstance metody z typem dostawcy języka. Użyj CreateProvider polecenia , gdy chcesz dynamicznie znaleźć skonfigurowaną implementację dostawcy dla nazwy języka.

Jeśli dla nazwy języka skonfigurowano więcej niż jedną implementację dostawcy, CreateProvider zwraca wystąpienie dostawcy dla ostatniego pasującego elementu konfiguracji.

Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) Użyj przeciążenia metody, jeśli chcesz zaimplementować określonego dostawcę języka. Na przykład użyj CreateProvider metody , aby uzyskać wystąpienie dostawcy, które obsługuje nazwę "CSharp"języka ; użyj Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) przeciążenia metody, aby uzyskać wystąpienie dostawcy specjalnie dla implementacji Microsoft.CSharp.CSharpCodeProvider . Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) Użyj metody , jeśli masz wielu dostawców kodu dla języka i chcesz utworzyć wystąpienie określonego dostawcy kodu.

Metoda sprawdza, czy co najmniej jedna implementacja IsDefinedLanguage dostawcy obsługuje określony język. Przed przekazaniem jej do CreateProviderelementu można zweryfikować nazwę języka.IsDefinedLanguage W przypadku przekazania nieobsługiwanej nazwy języka do CreateProviderSystem.Configuration.ConfigurationException elementu zostanie zwrócona wartość .

Metoda GetAllCompilerInfo może służyć do określania wszystkich CodeDomProvider implementacji na komputerze, w tym dodatkowych implementacji dostarczonych przez deweloperów i dostawców kompilatora, które są identyfikowane w <elemencie system.codedom> w pliku konfiguracji maszyny (Machine.config).

Metoda CreateProvider zwraca wystąpienie implementacji CodeDomProvider dla określonego języka.

Nazwy języków są bez uwzględniania wielkości liter.

Zobacz też

Dotyczy

CreateProvider(String, IDictionary<String,String>)

Źródło:
CodeDomProvider.cs
Źródło:
CodeDomProvider.cs
Źródło:
CodeDomProvider.cs

CodeDomProvider Pobiera wystąpienie dla określonych opcji języka i dostawcy.

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

Parametry

language
String

Nazwa języka.

providerOptions
IDictionary<String,String>

Kolekcja opcji dostawcy z pliku konfiguracji.

Zwraca

Dostawca CodeDOM, który jest implementowany dla określonej nazwy i opcji języka.

Atrybuty

Przykłady

W poniższym przykładzie pokazano, jak utworzyć wystąpienie dostawcy przy użyciu parametru 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

Uwagi

Uwaga

Ta metoda jest najczęściej używana do tworzenia wystąpienia dostawcy kodu w aplikacji, która może opcjonalnie używać jednego z kilku dostawców. CreateProvider(String, IDictionary<String,String>) umożliwia określenie w czasie wykonywania wersji dostawcy kodu, który chcesz utworzyć wystąpienie. Jeśli wiesz w czasie projektowania, który dostawca kodu ma być używany, należy utworzyć wystąpienie tego dostawcy kodu zamiast metody CreateProvider(String, IDictionary<String,String>) .

Użyj CreateProvider(String, IDictionary<String,String>) polecenia , gdy chcesz dynamicznie znaleźć skonfigurowaną implementację dostawcy dla określonego języka i opcji. Nazwy języków są bez uwzględniania wielkości liter. Aby uzyskać informacje o obsługiwanych opcjach dostawcy, zobacz dokumentację konkretnego dostawcy CodeDOM.

Aby uzyskać informacje na temat sprawdzania poprawności dostawcy i wywoływania dostawcy, jeśli dla nazwy języka skonfigurowano więcej niż jedną implementację dostawcy, zobacz sekcję Uwagi metody CreateProvider(String) .

Dotyczy