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.ThrowOnExceptiontrue开关,用于启用旧行为。 然后,库可以通过调用 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.命名空间.switchname
- Switch。库。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 中定义的值。