/// <summary> /// Initializes a new instance of the <see cref="Layout{T}" /> class. /// </summary> /// <param name="layout">Dynamic NLog Layout</param> /// <param name="parseValueFormat">Format used for parsing string-value into result value type</param> /// <param name="parseValueCulture">Culture used for parsing string-value into result value type</param> internal Layout(Layout layout, string parseValueFormat, CultureInfo parseValueCulture) { if (PropertyTypeConverter.IsComplexType(typeof(T))) { throw new NLogConfigurationException($"Layout<{typeof(T).ToString()}> not supported. Immutable value type is recommended"); } if (layout is SimpleLayout simpleLayout && simpleLayout.IsFixedText) { if (TryParseValueFromString(simpleLayout.FixedText, parseValueFormat, parseValueCulture, out var value) && value != null) { _fixedValue = (T)value; } else { _innerLayout = simpleLayout; _parseFormat = parseValueFormat; _parseFormatCulture = parseValueCulture; } }
private void FurnishInstance <T>(T settingsInstance) where T : ISettings { var settingInstanceType = settingsInstance.GetType(); //each setting group will have some properties. We'll loop through these using reflection var propertyFields = settingInstanceType.GetProperties(); foreach (var property in propertyFields) { var propertyName = property.Name; //retrive the value of setting from db var savedSettingEntity = Get(x => x.Name == propertyName && x.GroupName == settingInstanceType.Name, null).FirstOrDefault(); if (savedSettingEntity != null) { //set the property property.SetValue(settingsInstance, PropertyTypeConverter.CastPropertyValue(property, savedSettingEntity.Value)); } } }
public PropertyTypeConverterTests() { _sut = new PropertyTypeConverter(); }