CodeDomProvider.CreateProvider 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
CodeDomProvider 지정된 언어의 인스턴스를 가져옵니다.
오버로드
| Name | Description |
|---|---|
| CreateProvider(String) |
CodeDomProvider 지정된 언어의 인스턴스를 가져옵니다. |
| CreateProvider(String, IDictionary<String,String>) |
CodeDomProvider 지정된 언어 및 공급자 옵션에 대한 인스턴스를 가져옵니다. |
CreateProvider(String)
CodeDomProvider 지정된 언어의 인스턴스를 가져옵니다.
public:
static System::CodeDom::Compiler::CodeDomProvider ^ CreateProvider(System::String ^ language);
[System.Runtime.InteropServices.ComVisible(false)]
public static System.CodeDom.Compiler.CodeDomProvider CreateProvider(string language);
[<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 컴퓨터에 구성된 공급자가 없습니다.
language은 null입니다.
호출자에게 필요한 권한이 없습니다.
예제
다음 코드 예제에서는 입력 언어에 CodeDomProvider 대 한 구현을 결정 하 고 언어 공급자에 대 한 구성 된 설정을 표시 합니다. 이 코드 예제는 클래스에 제공된 더 큰 예제의 CompilerInfo 일부입니다.
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
설명
Note
이 메서드는 선택적으로 여러 공급자 중 하나를 사용할 수 있는 애플리케이션에서 코드 공급자의 인스턴스를 만드는 데 가장 일반적으로 사용됩니다. 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 전달하면 throw됩니다.
이 메서드는 GetAllCompilerInfo 컴퓨터 구성 파일(Machine.config)의 system.codedom> 요소에서< 식별되는 개발자 및 컴파일러 공급업체가 제공하는 추가 구현을 포함하여 컴퓨터의 모든 CodeDomProvider 구현을 확인하는 데 사용할 수 있습니다.
메서드는 CreateProvider 특정 언어에 CodeDomProvider 대한 구현 인스턴스를 반환합니다.
언어 이름은 대/소문자를 구분하지 않습니다.
추가 정보
적용 대상
CreateProvider(String, IDictionary<String,String>)
CodeDomProvider 지정된 언어 및 공급자 옵션에 대한 인스턴스를 가져옵니다.
public:
static System::CodeDom::Compiler::CodeDomProvider ^ CreateProvider(System::String ^ language, System::Collections::Generic::IDictionary<System::String ^, System::String ^> ^ providerOptions);
[System.Runtime.InteropServices.ComVisible(false)]
public static System.CodeDom.Compiler.CodeDomProvider CreateProvider(string language, System.Collections.Generic.IDictionary<string,string> providerOptions);
[<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
설명
Note
이 메서드는 선택적으로 여러 공급자 중 하나를 사용할 수 있는 애플리케이션에서 코드 공급자의 인스턴스를 만드는 데 가장 일반적으로 사용됩니다. CreateProvider(String, IDictionary<String,String>) 를 사용하면 런타임에 인스턴스화할 코드 공급자의 버전을 지정할 수 있습니다. 디자인 타임에 사용할 코드 공급자를 알고 있는 경우 메서드를 사용하는 대신 해당 코드 공급자의 인스턴스를 CreateProvider(String, IDictionary<String,String>) 만들어야 합니다.
특정 언어 및 옵션에 대해 구성된 공급자 구현을 동적으로 찾으려는 경우에 사용합니다 CreateProvider(String, IDictionary<String,String>) . 언어 이름은 대/소문자를 구분하지 않습니다. 지원되는 공급자 옵션에 대한 자세한 내용은 특정 CodeDOM 공급자 설명서를 참조하세요.
언어 이름에 대해 둘 이상의 공급자 구현이 구성된 경우 공급자의 유효성을 검사하고 공급자를 호출하는 방법에 대한 자세한 내용은 메서드의 설명 섹션을 CreateProvider(String) 참조하세요.