CodeDomProvider.CreateProvider 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得 CodeDomProvider 指定語言的實例。
多載
| 名稱 | 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 方法會檢查至少一個提供者實作是否支援特定語言。 你可以在傳給 CreateProvider之前,先驗證IsDefinedLanguage語言名稱。 如果你把不支援的語言名稱傳給 CreateProvider a System.Configuration.ConfigurationException ,就會被丟出。
此 GetAllCompilerInfo 方法可用於判定電腦上的所有 CodeDomProvider 實作,包括由開發者與編譯器廠商提供的額外實作,這些實作在 <機器設定檔(Machine.config)中的 system.codedom> 元素 中標示。
該 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) 的備註區。