private static TOptions SetEnvironmentVariables <TOptions>(TOptions eventStoreArguments, string environmentPrefix) where TOptions : class, IOptions, new()
        {
            var instanceToUseForDefaultValueComparrison = new TOptions();

            foreach (var property in typeof(TOptions).GetProperties())
            {
                var defaultValue             = property.GetValue(instanceToUseForDefaultValueComparrison, null);
                var environmentVariableName  = EnvironmentVariableNameProvider.GetName(environmentPrefix, property.Name);
                var environmentVariableValue = Environment.GetEnvironmentVariable(environmentVariableName);
                var currentValue             = property.GetValue(eventStoreArguments, null);

                if (defaultValue != null &&
                    defaultValue.Equals(currentValue) &&
                    environmentVariableValue != null)
                {
                    try
                    {
                        var typeConverter = GetTypeConverter(property.PropertyType);
                        var valueToUse    = typeConverter.ConvertFrom(environmentVariableValue);
                        SetDumpedOptions(property.Name, FromEnvironmentVariable, valueToUse);
                        property.SetValue(eventStoreArguments, valueToUse, null);
                    }
                    catch (Exception ex)
                    {
                        throw new OptionException(ex.Message, property.Name);
                    }
                }
            }
            return(eventStoreArguments);
        }
示例#2
0
 public OptionSource[] Parse <TOptions>(string environmentPrefix) where TOptions : class
 {
     _parsedOptions = new List <OptionSource>();
     foreach (var property in typeof(TOptions).GetProperties())
     {
         var environmentVariableName  = EnvironmentVariableNameProvider.GetName(environmentPrefix, property.Name);
         var environmentVariableValue = Environment.GetEnvironmentVariable(environmentVariableName);
         if (!String.IsNullOrEmpty(environmentVariableValue))
         {
             _parsedOptions.Add(new OptionSource("Environment Variable", property.Name, environmentVariableValue));
         }
     }
     return(_parsedOptions.ToArray());
 }