CodeDomProvider.CreateProvider Metódus

Definíció

CodeDomProvider Lekéri a megadott nyelv egy példányát.

Túlterhelések

Name Description
CreateProvider(String)

CodeDomProvider Lekéri a megadott nyelv egy példányát.

CreateProvider(String, IDictionary<String,String>)

CodeDomProvider Lekéri a megadott nyelvhez és szolgáltatói beállításokhoz tartozó példányt.

CreateProvider(String)

Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs

CodeDomProvider Lekéri a megadott nyelv egy példányát.

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

Paraméterek

language
String

A nyelv neve.

Válaszok

A megadott nyelvnévhez implementált CodeDOM-szolgáltató.

Attribútumok

Kivételek

A language számítógépen nincs konfigurált szolgáltató.

Az language van null.

A hívó nem rendelkezik a szükséges engedéllyel.

Példák

Az alábbi példakód egy bemeneti nyelv implementációját CodeDomProvider határozza meg, és megjeleníti a nyelvszolgáltató konfigurált beállításait. Ez a példakód egy nagyobb, az CompilerInfo osztályhoz tartozó példa része.

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

Megjegyzések

Note

Ezt a módszert leggyakrabban egy olyan kódszolgáltató példányának létrehozására használják egy alkalmazásban, amely opcionálisan több szolgáltató egyikét is használhatja. CreateProvider lehetővé teszi a példányosítani kívánt kódszolgáltató futásidőben történő megadását. Ha a tervezéskor tudja, hogy melyik kódszolgáltatót kell használni, a metódus használata helyett a kódszolgáltató egy példányát kell létrehoznia CreateProvider .

A CreateProvider metódus egy példányt CodeDomProvider ad vissza egy adott nyelvnévhez; hasonló ahhoz, hogy a metódust Activator.CreateInstance a nyelvszolgáltató típusával hívja meg. Akkor érdemes használni CreateProvider , ha dinamikusan meg szeretne találni egy konfigurált szolgáltatói implementációt egy nyelvnévhez.

Ha egynél több szolgáltatói implementáció van konfigurálva a nyelvnévhez, CreateProvider az utolsó egyező konfigurációelem szolgáltatópéldányát adja vissza.

A metódus túlterhelését Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) akkor használja, ha egy adott nyelvi szolgáltató implementálására van szüksége. A CreateProvider metódussal például lekérhet egy olyan szolgáltatópéldányt, amely támogatja a nyelv nevét "CSharp"; A Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) metódus túlterhelésével kérje le a szolgáltatópéldányt kifejezetten a Microsoft.CSharp.CSharpCodeProvider implementációhoz. Akkor használja ezt a Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) módszert, ha több kódszolgáltatóval rendelkezik egy nyelvhez, és egy adott kódszolgáltatót szeretne példányosítani.

A IsDefinedLanguage módszer ellenőrzi, hogy legalább egy szolgáltatói implementáció támogatja-e az adott nyelvet. A nyelvnév érvényesítése előtt érvényesítheti a IsDefinedLanguagenyelv nevétCreateProvider. Ha nem támogatott nyelvnevet CreateProvider ad át a System.Configuration.ConfigurationException rendszernek.

Ez a GetAllCompilerInfo módszer a számítógép összes CodeDomProvider implementációjának meghatározására használható, beleértve a fejlesztők és fordítógyártók által biztosított további implementációkat is, amelyek a gép konfigurációs fájljának system.codedom< elemében> (Machine.config) vannak azonosítva.

A CreateProvider metódus egy adott nyelv implementációjának egy példányát CodeDomProvider adja vissza.

A nyelvnevek nem érzéketlenek.

Lásd még

A következőre érvényes:

CreateProvider(String, IDictionary<String,String>)

Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs
Forrás:
CodeDomProvider.cs

CodeDomProvider Lekéri a megadott nyelvhez és szolgáltatói beállításokhoz tartozó példányt.

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

Paraméterek

language
String

A nyelv neve.

providerOptions
IDictionary<String,String>

A konfigurációs fájl szolgáltatói beállításainak gyűjteménye.

Válaszok

A megadott nyelvnévhez és beállításokhoz implementált CodeDOM-szolgáltató.

Attribútumok

Példák

Az alábbi példa bemutatja, hogyan hozhat létre egy szolgáltatópéldányt a providerOptions paraméter használatával.

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

Megjegyzések

Note

Ezt a módszert leggyakrabban egy olyan kódszolgáltató példányának létrehozására használják egy alkalmazásban, amely opcionálisan több szolgáltató egyikét is használhatja. CreateProvider(String, IDictionary<String,String>) lehetővé teszi, hogy futásidőben adja meg a példányosítani kívánt kódszolgáltató verzióját. Ha a tervezéskor tudja, hogy melyik kódszolgáltatót kell használni, a metódus használata helyett a kódszolgáltató egy példányát CreateProvider(String, IDictionary<String,String>) kell létrehoznia.

Akkor használható CreateProvider(String, IDictionary<String,String>) , ha dinamikusan szeretne egy adott nyelvhez és beállításokhoz konfigurált szolgáltatói implementációt találni. A nyelvnevek nem érzéketlenek. A támogatott szolgáltatói lehetőségekről a CodeDOM szolgáltatói dokumentációjában talál további információt.

A szolgáltató érvényesítésével és a szolgáltató meghívásával kapcsolatos információkért, ha egynél több szolgáltatói implementáció van konfigurálva a nyelvnévhez, tekintse meg a CreateProvider(String) metódus Megjegyzések szakaszát.

A következőre érvényes: