CodeDomProvider.CreateProvider 메서드

정의

지정된 언어에 대한 CodeDomProvider 인스턴스를 가져옵니다.

오버로드

CreateProvider(String)

지정된 언어에 대한 CodeDomProvider 인스턴스를 가져옵니다.

CreateProvider(String, IDictionary<String,String>)

지정된 언어와 공급자 옵션에 대한 CodeDomProvider 인스턴스를 가져옵니다.

CreateProvider(String)

Source:
CodeDomProvider.cs
Source:
CodeDomProvider.cs
Source:
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 대신 해당 코드 공급자의 instance 만들어야 합니다.

메서드는 CreateProvider 특정 언어 이름에 대한 instance 반환 CodeDomProvider 합니다. 언어 공급자 형식으로 메서드를 Activator.CreateInstance 호출하는 것과 비슷합니다. 언어 이름에 대해 구성된 공급자 구현을 동적으로 찾으려는 경우 를 사용합니다 CreateProvider .

언어 이름 CreateProvider 에 대해 둘 이상의 공급자 구현이 구성된 경우 는 마지막으로 일치하는 구성 요소에 대한 공급자 instance 반환합니다.

특정 언어 공급자 구현을 Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) 원하는 경우 메서드 오버로드를 사용합니다. 예를 들어 메서드를 CreateProvider 사용하여 언어 이름을 "CSharp"지원하는 공급자 instance 가져옵니다. 메서드 오버로드를 사용하여 Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) 구현에 대한 Microsoft.CSharp.CSharpCodeProvider 공급자 instance 가져옵니다. 언어에 Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) 대한 여러 코드 공급자가 있고 특정 코드 공급자를 인스턴스화하려는 경우 메서드를 사용합니다.

메서드는 IsDefinedLanguage 하나 이상의 공급자 구현이 특정 언어를 지원하는지 여부를 확인합니다. 에 전달하기 전에 를 사용하여 IsDefinedLanguage 언어 이름의 유효성을 검사할 CreateProvider수 있습니다. 지원되지 않는 언어 이름을 CreateProviderSystem.Configuration.ConfigurationException 에 전달하면 이 throw됩니다.

메서드는 GetAllCompilerInfo 컴퓨터 구성 파일(Machine.config)의 system.codedom> 요소에서< 식별되는 개발자 및 컴파일러 공급업체가 제공하는 추가 구현을 포함하여 컴퓨터의 모든 CodeDomProvider 구현을 확인하는 데 사용할 수 있습니다.

메서드는 CreateProvider 특정 언어에 대한 구현의 CodeDomProvider instance 반환합니다.

언어 이름은 대/소문자를 구분하지 않습니다.

추가 정보

적용 대상

CreateProvider(String, IDictionary<String,String>)

Source:
CodeDomProvider.cs
Source:
CodeDomProvider.cs
Source:
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 공급자의 instance 만드는 방법을 보여줍니다.

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>) 대신 해당 코드 공급자의 instance 만들어야 합니다.

특정 언어 및 옵션에 대해 구성된 공급자 구현을 동적으로 찾으려는 경우 를 사용합니다 CreateProvider(String, IDictionary<String,String>) . 언어 이름은 대/소문자를 구분하지 않습니다. 지원되는 공급자 옵션에 대한 자세한 내용은 특정 CodeDOM 공급자 설명서를 참조하세요.

언어 이름에 대해 둘 이상의 공급자 구현이 구성된 경우 공급자의 유효성을 검사하고 공급자를 호출하는 방법에 대한 자세한 내용은 메서드의 설명 섹션을 CreateProvider(String) 참조하세요.

적용 대상