private string replacePatterns(string input, user user, order order = null) { string output = input; Regex r = new Regex(@"\[(.+?)\]", RegexOptions.IgnoreCase); Match m = r.Match(input); while (m.Success) { try { string pat = m.Groups[1].Value; string newVal = $"[{pat}]"; var arr = pat.Split('.'); if (arr[0] == "user") { newVal = user.GetType().GetProperty(arr[1]).GetValue(user, null).ToString(); } else if (arr[0] == "order") { newVal = order.GetType().GetProperty(arr[1]).GetValue(order, null).ToString(); } output = output.Replace($"[{pat}]", newVal); } catch { } m = m.NextMatch(); } return(output); }