protected CentralizableSetting <T> InitializeSetting <T>( [NotNull] PropertyInfo overridableSettingPropertyInfo, T?factoryDefault) where T : struct { OverridableSetting <T> centralSetting = CentralOptions?.GetOverridableSetting <T>(overridableSettingPropertyInfo); // NOTE: only initialize local setting with a value if central setting is null // or change behavior in CentralizedSetting to return the central value // even if a local value is defined. T?initialSettingIfLocalSettingIsNull = centralSetting == null ? factoryDefault : null; OverridableSetting <T> localSetting = LocalOptions.GetOverridableSetting(overridableSettingPropertyInfo, initialSettingIfLocalSettingIsNull); var result = new CentralizableSetting <T>(centralSetting, localSetting, factoryDefault); return(result); }
public OptionsBase <TPartialOptions> Clone() { TPartialOptions newCentralOptions = (TPartialOptions)CentralOptions?.Clone(); var clone = (OptionsBase <TPartialOptions>) Activator.CreateInstance(GetType(), newCentralOptions, (TPartialOptions)LocalOptions.Clone()); return(clone); }