예제 #1
0
        public static IConfiguration SetValue <T>([NotNull] this IConfiguration config, [NotNull] Expression <Func <T> > expression, [CanBeNull] T value, [CanBeNull] string instance = null)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }

            var settingInfo = SettingMetadata.FromExpression(expression, false);
            var query       = ValueQueryFactory.CreateSetValueQuery(settingInfo, value, instance);

            //var settingValue = config.GetValue(settingInfo.SettingName, typeof(T), settingInfo.ProviderName) ?? settingInfo.DefaultValue;

            //var settingValue = //settingInfo.GetValue();

            settingInfo
            .Validations
            .Validate(query.SettingName, value);

            config.SetValue(query);
            return(config);
        }
예제 #2
0
        private static T GetValue <T>([NotNull] this IConfiguration config, [NotNull] LambdaExpression expression, [CanBeNull] string instanceName = null)
        {
            if (config == null)
            {
                throw new ArgumentNullException(nameof(config));
            }
            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }

            var settingMetadata = SettingMetadata.FromExpression(expression, false);
            var query           = ValueQueryFactory.CreateGetValueQuery(settingMetadata, instanceName);

            var settingValue = config.GetValue(query) ?? settingMetadata.DefaultValue;

            settingMetadata
            .Validations
            .Validate(query.SettingName, settingValue);

            return((T)settingValue);
        }