Поделиться через


CodeDomProvider.CreateProvider Метод

Определение

Получает экземпляр CodeDomProvider для заданного языка.

Перегрузки

CreateProvider(String)

Получает экземпляр CodeDomProvider для заданного языка.

CreateProvider(String, IDictionary<String,String>)

Получает экземпляр CodeDomProvider для заданного языка и параметров поставщика.

CreateProvider(String)

Исходный код:
CodeDomProvider.cs
Исходный код:
CodeDomProvider.cs
Исходный код:
CodeDomProvider.cs

Получает экземпляр CodeDomProvider для заданного языка.

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

Параметры

language
String

Имя языка.

Возвращаемое значение

Поставщик CodeDOM, реализованный для заданного имени языка.

Атрибуты

Исключения

Для языка, заданного в параметре language, на данном компьютере не настроен поставщик.

Значение параметра languagenull.

У вызывающего объекта отсутствует необходимое разрешение.

Примеры

В следующем примере кода определяется CodeDomProvider реализация языка ввода и отображаются настроенные параметры для поставщика языка. Этот пример входит в состав более крупного примера использования класса CompilerInfo.

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

Комментарии

Примечание

Этот метод чаще всего используется для создания экземпляра поставщика кода в приложении, которое может при необходимости использовать один из нескольких поставщиков. 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 реализации. Используйте метод , Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) если у вас есть несколько поставщиков кода для одного языка и вы хотите создать экземпляр определенного поставщика кода.

Метод IsDefinedLanguage проверяет, поддерживает ли хотя бы одна реализация поставщика определенный язык. Вы можете проверить имя языка с помощью IsDefinedLanguage перед его передачей в CreateProvider. При передаче неподдерживаемого имени CreateProviderSystem.Configuration.ConfigurationException языка в вызывается исключение .

Метод GetAllCompilerInfo можно использовать для определения всех CodeDomProvider реализаций на компьютере, включая дополнительные реализации, предоставляемые разработчиками и поставщиками компиляторов, которые определены в элементе< system.codedom> в файле конфигурации компьютера (Machine.config).

Метод CreateProvider возвращает экземпляр реализации для определенного CodeDomProvider языка.

В именах языков регистр не учитывается.

См. также раздел

Применяется к

CreateProvider(String, IDictionary<String,String>)

Исходный код:
CodeDomProvider.cs
Исходный код:
CodeDomProvider.cs
Исходный код:
CodeDomProvider.cs

Получает экземпляр CodeDomProvider для заданного языка и параметров поставщика.

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

Параметры

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

Комментарии

Примечание

Этот метод чаще всего используется для создания экземпляра поставщика кода в приложении, которое может при необходимости использовать один из нескольких поставщиков. CreateProvider(String, IDictionary<String,String>) позволяет указать во время выполнения версию поставщика кода, экземпляр которого требуется создать. Если во время разработки известно, какой поставщик кода будет использоваться, следует создать экземпляр этого поставщика кода, а не использовать CreateProvider(String, IDictionary<String,String>) метод .

Используйте, CreateProvider(String, IDictionary<String,String>) если требуется динамически найти настроенную реализацию поставщика для определенного языка и параметров. В именах языков регистр не учитывается. Сведения о поддерживаемых параметрах поставщика см. в документации по поставщику CodeDOM.

Сведения о проверке поставщика и вызове поставщика, если для имени языка настроено несколько реализаций поставщика, см. в разделе Примечания CreateProvider(String) метода .

Применяется к