private static void SetPropertyValue <T>(Tiled.PropertiesDictionary properties, T value, [CallerMemberName] string key = null) where T : class { if (properties != null) { properties[key] = value; } }
private static object GetPropertyValue(Tiled.PropertiesDictionary properties, Type type, object defaultValue, [CallerMemberName] string key = null) { object result; if (properties != null && properties.TryGetValue(key, out object value)) { if (type == value.GetType()) { return(value); } try { bool isNumeric = IsNumeric(value); if (type.IsEnum) { if (!isNumeric) { foreach (var enumValues in type.GetEnumValues()) { if (value.ToString().Equals(enumValues.ToString(), StringComparison.OrdinalIgnoreCase)) { return(enumValues); } } return(int.TryParse(value.ToString(), out int r) ? r : defaultValue); } return(Convert.ToInt32(value)); } //result = (T)Convert.ChangeType(value, type, null); result = TypeDescriptor.GetConverter(type).ConvertFromInvariantString(value.ToString()); } catch { result = defaultValue; } } else { result = defaultValue; } return(result); }
private static T GetPropertyValue <T>(Tiled.PropertiesDictionary properties, T defaultValue = default(T), [CallerMemberName] string key = null) { return((T)GetPropertyValue(properties, typeof(T), defaultValue, key)); }