private OptionsDto GetOptions() { var result = new OptionsDto(); var optionsFileContent = File.ReadAllText(optionsFilename); var options = optionsFileContent.Split(new [] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); foreach (var option in options) { try { var nameAndValue = option.Split('='); var name = nameAndValue.First().Trim(); var value = nameAndValue.Last().Trim(); var property = typeof(OptionsDto).GetProperty(name); if (property.PropertyType.IsEnum) { var convertedValue = Enum.Parse(property.PropertyType, value); property.SetValue(result, convertedValue); } else { var convertedValue = Convert.ChangeType(value, property.PropertyType); property.SetValue(result, convertedValue); } } catch { } } return result; }
public void WriteOptionsToFile(string optionsFilename, OptionsDto options) { using (var sw = File.CreateText(optionsFilename)) { var properties = options.GetType().GetProperties(); foreach (var property in properties) { sw.WriteLine($"{property.Name} = {property.GetValue(options)}"); } sw.Close(); } }
public OptionsHandler(IOptionsFileWriter optionsFileWriter) { this.optionsFileWriter = optionsFileWriter; optionsFileWriter.CreateOptionsFileIfNotExists(optionsFilename); Options = GetOptions(); }