Bagikan melalui


CodeDomProvider.CreateProvider Metode

Definisi

Mendapatkan instans CodeDomProvider untuk bahasa yang ditentukan.

Overload

CreateProvider(String)

Mendapatkan instans CodeDomProvider untuk bahasa yang ditentukan.

CreateProvider(String, IDictionary<String,String>)

Mendapatkan instans CodeDomProvider untuk opsi bahasa dan penyedia yang ditentukan.

CreateProvider(String)

Sumber:
CodeDomProvider.cs
Sumber:
CodeDomProvider.cs
Sumber:
CodeDomProvider.cs

Mendapatkan instans CodeDomProvider untuk bahasa yang ditentukan.

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

Parameter

language
String

Nama bahasa.

Mengembalikan

Penyedia CodeDOM yang diimplementasikan untuk nama bahasa yang ditentukan.

Atribut

Pengecualian

Tidak language memiliki penyedia yang dikonfigurasi pada komputer ini.

language adalah null.

Pemanggil tidak memiliki izin yang diperlukan.

Contoh

Contoh kode berikut menentukan CodeDomProvider implementasi untuk bahasa input dan menampilkan pengaturan yang dikonfigurasi untuk penyedia bahasa. Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk CompilerInfo kelas .

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

Keterangan

Catatan

Metode ini paling umum digunakan untuk membuat instans penyedia kode dalam aplikasi yang dapat secara opsional menggunakan salah satu dari beberapa penyedia. CreateProvider memungkinkan Anda menentukan pada waktu proses penyedia kode yang ingin Anda buat instansnya. Jika Anda tahu pada waktu desain penyedia kode mana yang akan digunakan, Anda harus membuat instans penyedia kode tersebut CreateProvider daripada menggunakan metode .

Metode mengembalikan CreateProvider instans CodeDomProvider untuk nama bahasa tertentu; mirip dengan memanggil Activator.CreateInstance metode dengan jenis penyedia bahasa. Gunakan CreateProvider saat Anda ingin menemukan implementasi penyedia yang dikonfigurasi secara dinamis untuk nama bahasa.

Jika lebih dari satu implementasi penyedia dikonfigurasi untuk nama bahasa, CreateProvider mengembalikan instans penyedia untuk elemen konfigurasi pencocokan terakhir.

Gunakan metode kelebihan Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) beban saat Anda menginginkan implementasi penyedia bahasa tertentu. Misalnya, gunakan CreateProvider metode untuk mendapatkan instans penyedia yang mendukung nama "CSharp"bahasa ; gunakan Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) metode kelebihan beban untuk mendapatkan instans penyedia khusus untuk Microsoft.CSharp.CSharpCodeProvider implementasi. Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) Gunakan metode jika Anda memiliki beberapa penyedia kode untuk bahasa dan Anda ingin membuat instans penyedia kode tertentu.

Metode ini IsDefinedLanguage memeriksa apakah setidaknya satu implementasi penyedia mendukung bahasa tertentu. Anda dapat memvalidasi nama bahasa menggunakan IsDefinedLanguage sebelum meneruskannya ke CreateProvider. Jika Anda meneruskan nama bahasa yang tidak didukung ke CreateProviderSystem.Configuration.ConfigurationException dilemparkan.

Metode ini GetAllCompilerInfo dapat digunakan untuk menentukan semua CodeDomProvider implementasi pada komputer, termasuk implementasi tambahan yang disediakan oleh pengembang dan vendor pengompilasi yang diidentifikasi dalam <System.codedom> Element dalam file konfigurasi komputer (Machine.config).

Metode mengembalikan CreateProvider instans CodeDomProvider implementasi untuk bahasa tertentu.

Nama bahasa tidak peka huruf besar/kecil.

Lihat juga

Berlaku untuk

CreateProvider(String, IDictionary<String,String>)

Sumber:
CodeDomProvider.cs
Sumber:
CodeDomProvider.cs
Sumber:
CodeDomProvider.cs

Mendapatkan instans CodeDomProvider untuk opsi bahasa dan penyedia yang ditentukan.

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

Parameter

language
String

Nama bahasa.

providerOptions
IDictionary<String,String>

Kumpulan opsi penyedia dari file konfigurasi.

Mengembalikan

Penyedia CodeDOM yang diimplementasikan untuk nama dan opsi bahasa yang ditentukan.

Atribut

Contoh

Contoh berikut menunjukkan cara membuat instans penyedia dengan menggunakan providerOptions parameter .

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

Keterangan

Catatan

Metode ini paling umum digunakan untuk membuat instans penyedia kode dalam aplikasi yang dapat secara opsional menggunakan salah satu dari beberapa penyedia. CreateProvider(String, IDictionary<String,String>) memungkinkan Anda menentukan pada durasi versi penyedia kode yang ingin Anda buat instansnya. Jika Anda tahu pada waktu desain penyedia kode mana yang akan digunakan, Anda harus membuat instans penyedia kode tersebut CreateProvider(String, IDictionary<String,String>) alih-alih menggunakan metode .

Gunakan CreateProvider(String, IDictionary<String,String>) saat Anda ingin menemukan implementasi penyedia yang dikonfigurasi secara dinamis untuk bahasa dan opsi tertentu. Nama bahasa tidak peka huruf besar/kecil. Untuk informasi tentang opsi penyedia yang didukung, lihat dokumentasi penyedia CodeDOM tertentu.

Untuk informasi tentang memvalidasi penyedia dan memanggil penyedia jika lebih dari satu implementasi penyedia dikonfigurasi untuk nama bahasa, lihat bagian Keterangan dari CreateProvider(String) metode .

Berlaku untuk