AppContext.SetSwitch(String, Boolean) 方法

定义

设置开关的值。

public:
 static void SetSwitch(System::String ^ switchName, bool isEnabled);
public static void SetSwitch (string switchName, bool isEnabled);
static member SetSwitch : string * bool -> unit
Public Shared Sub SetSwitch (switchName As String, isEnabled As Boolean)

参数

switchName
String

开关的名称。

isEnabled
Boolean

开关的值。

例外

switchName 上声明的默认值为 null

switchName 上声明的默认值为 Empty

示例

以下代码行将名为 的 Switch.AmazingLib.ThrowOnException 开关设置为 true,从而启用旧行为。 然后,库可以通过调用 TryGetSwitch 方法检查库使用者是否已设置开关的值。

AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true);
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", true)
AppContext.SetSwitch("Switch.AmazingLib.ThrowOnException", True)

注解

AppContext 使库编写器能够为用户的新功能提供统一的选择退出机制。 它在组件之间建立松耦合的协定,以便与选择退出请求进行通信。 对现有功能进行更改时,此功能通常很重要。 相反,已有新功能隐式选择加入。

方法 SetSwitch 由应用程序 (或库) 调用,以声明开关 (的值始终 Boolean 是依赖库定义的) 值。 开关始终是隐式 false的 ,它提供新行为。 将 开关设置为 true 将启用它,从而提供旧行为。 将 开关显式设置为 false 也会提供新行为。 然后,依赖库可以通过调用 TryGetSwitch 方法检查开关的值。

注意

对交换机名称使用一致的格式是有益的,因为它们是由库公开的正式协定。 以下是两种明显的格式。

  • Switch.namespace.switchname
  • Switch.library.switchname

对于在 .NET Framework 上运行的应用程序,除了以编程方式设置开关的值外,还可以设置它:

  • 通过将开关名称和值添加到应用程序配置文件的运行时>节中的<AppContextSwitchOverrides> 元素。< 例如,下面定义了一个名为 Libraries.FPLibrary.UseExactFloatingPointComparison 的开关,其值为 False

    <configuration>
       <runtime>
          <AppContextSwitchOverrides value="Libraries.FPLibrary.UseExactFloatingPointComparison=false" />
       </runtime>
    </configuration>
    
  • 通过将名称为开关名称的字符串值添加到 HKLM\SOFTWARE\Microsoft\。NETFramework\AppContext (和 HKLM\SOFTWARE\Wow6432Node\Microsoft\。NETFramework\AppContext) 注册表中的子项。 其值必须是可由 方法分析Boolean.Parse的 的Boolean字符串表示形式;也就是说,它必须是“True”、“true”、“False”或“false”。

如果注册表项存在,则调用 时SetSwitch参数会isEnabled覆盖其值。 也就是说,对 方法的最新调用 SetSwitch 将替代注册表、应用配置文件中定义的值,或者由对 方法的先前调用 SetSwitch 替代。

适用于

另请参阅