AppContext.SetSwitch(String, Boolean) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
设置开关的值。
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 替代。