private ExperimentalFlag(ExperimentalFlag flag, bool enabled = false) { mParentFlag = flag.mParentFlag; mGuid = flag.Guid; mName = flag.Name; mEnabled = enabled; }
public ExperimentalFlag( string name, Guid namespaceId, bool enabled = false, IExperimentalFlag parentFlag = null ) { if (string.IsNullOrWhiteSpace(name)) { throw new ArgumentNullException(nameof(name)); } mParentFlag = parentFlag; mGuid = GuidUtils.CreateNamed(namespaceId, name); mName = name; mEnabled = enabled; }
private bool InternalTrySet(PropertyInfo property, [NotNull] IExperimentalFlag flag, bool enabled) { /* Unwraps the flag */ if (flag is ExperimentalFlagAlias && !TryGet(flag.Guid, out flag)) { return(false); } if (property == null && !TryGetProperty(flag, out property)) { return(false); } property.SetValue(this, flag.With(enabled)); Save(); return(true); }
public bool TryGet(string flagName, out IExperimentalFlag flag) { return(ValueUtils.SetDefault(TryGetProperty(flagName, out var property), out flag) && property.TryGetValue(this, out flag)); }
public bool TrySet([NotNull] IExperimentalFlag flag, bool enabled) { return(InternalTrySet(null, flag, enabled)); }
protected bool TryGetProperty(IExperimentalFlag flag, out PropertyInfo flagPropertyInfo) { return(mFlagsById.TryGetValue(flag.Guid, out flagPropertyInfo)); }
public bool Enable([NotNull] IExperimentalFlag flag) { return(TrySet(flag, true)); }
public bool Disable(IExperimentalFlag flag) { return(TrySet(flag, false)); }
/// <inheritdoc cref="IEquatable{T}" /> public bool Equals(IExperimentalFlag other) { return(Guid == other?.Guid && Enabled == other.Enabled); }
/// <inheritdoc cref="IEquatable{T}" /> public bool Equals(IExperimentalFlag other) { return(this == other); }