public static string GetName(this MemberInfo info, MondBindingOptions options) { var name = info.GetCustomAttribute <MondAliasAttribute>(true)?.Name ?? info.Name; return(options.HasFlag(MondBindingOptions.PreserveNames) && !name.StartsWith("__") ? name : name.ChangeNameCase()); }
public static string ChangeNameCase(this string name, MondBindingOptions options = MondBindingOptions.None) { if (options.HasFlag(MondBindingOptions.PreserveNames)) { return(name); } if (!StringExtensions.IdentifierRegex.IsMatch(name)) { return(name); } var matches = StringExtensions.IdentifierRegex .Matches(name) .Cast <Match>() .Select( m => m.Value .ToLower() .Trim('_') ) .ToArray(); return(matches.First() + String.Join(String.Empty, matches.Skip(1).Select(s => s.ToUpperFirst()))); }