CodeDomProvider.CreateProvider 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得指定語言的 CodeDomProvider 執行個體。
多載
CreateProvider(String) |
取得指定語言的 CodeDomProvider 執行個體。 |
CreateProvider(String, IDictionary<String,String>) |
取得指定之語言和提供者選項的 CodeDomProvider 執行個體。 |
CreateProvider(String)
取得指定語言的 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
在這部電腦上沒有已設定的提供者。
language
為 null
。
呼叫端沒有必要的權限。
範例
下列程式代碼範例會 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 方法。
方法 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 。
方法GetAllCompilerInfo可用來判斷計算機上的所有CodeDomProvider實作,包括開發人員和編譯程式廠商所提供的其他實作,這些實作是在計算機組態檔的 system.codedom> 元素中<識別 (Machine.config) 。
方法 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);
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
的實例。
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>) 方法。
當您要動態尋找特定語言和選項的已設定提供者實作時,請使用 CreateProvider(String, IDictionary<String,String>) 。 語言名稱不區分大小寫。 如需支援提供者選項的詳細資訊,請參閱特定的CodeDOM提供者檔。
如需驗證提供者和呼叫提供者的相關信息,如果針對語言名稱設定多個提供者實作,請參閱 方法的 CreateProvider(String) 一節。