Beispiel #1
0
        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);
        }
Beispiel #2
0
        public OptionsBase <TPartialOptions> Clone()
        {
            TPartialOptions newCentralOptions =
                (TPartialOptions)CentralOptions?.Clone();

            var clone = (OptionsBase <TPartialOptions>)
                        Activator.CreateInstance(GetType(), newCentralOptions,
                                                 (TPartialOptions)LocalOptions.Clone());

            return(clone);
        }