using System; using System.Collections.Generic; using System.Dynamic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Metadata_Translator { public static class ExpandoObjectExtensions { public static string SeparateCamelCase(this ExpandoObject expando, string columnName) { if (expando != null && ((IDictionary)expando)[columnName] is string text) { char separator = ' '; char lastChar = separator; var sb = new StringBuilder(); foreach (var currentChar in text.Replace("_", "")) { if (char.IsUpper(currentChar) && lastChar != separator) sb.Append(separator); sb.Append(currentChar); lastChar = currentChar; } return sb.ToString(); } return string.Empty; } public static string GetValue(this ExpandoObject expando, string columnName) { return expando.GetObject(columnName)?.ToString(); } public static object GetObject(this ExpandoObject expando, string columnName) { if (expando != null && ((IDictionary)expando).ContainsKey(columnName)) { return ((IDictionary)expando)[columnName]; } return null; } public static void SetValue(this ExpandoObject expando, string columnName, string value, bool overwrite) { if (expando != null) { if (overwrite || string.IsNullOrEmpty(expando.GetValue(columnName))) { ((IDictionary)expando)[columnName] = value; } } } } }