private StyleOptions ConstructStyleFromShapeInfo(Shape shape) { var opt = new StyleOptions(); var props = opt.GetType().GetProperties(); foreach (var propertyInfo in props) { var valueInStr = shape.Tags[Service.Effect.Tag.ReloadPrefix + propertyInfo.Name]; if (string.IsNullOrEmpty(valueInStr)) { continue; } if (propertyInfo.PropertyType == typeof(string)) { propertyInfo.SetValue(opt, valueInStr, null); } else if (propertyInfo.PropertyType == typeof(int)) { var valueInInt = int.Parse(valueInStr); propertyInfo.SetValue(opt, valueInInt, null); } else if (propertyInfo.PropertyType == typeof(bool)) { var valueInBool = bool.Parse(valueInStr); propertyInfo.SetValue(opt, valueInBool, null); } } return(opt); }