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 而不是使用 方法。

方法 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。 如果向 传递不受支持的语言名称 CreateProviderSystem.Configuration.ConfigurationException 则会引发 。

方法GetAllCompilerInfo可用于确定计算机上的所有CodeDomProvider实现,包括开发人员和编译器供应商提供的其他实现,这些实现在计算机配置文件 (Machine.config) 的 system.codedom> 元素中标识<

方法 CreateProvider 返回特定语言的 CodeDomProvider 实现实例。

语言名称不区分大小写。

另请参阅

适用于

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 参数创建提供程序的实例。

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) “备注”部分。

适用于