public static MethodInfo GetInstanceMethod(Type type, string methodName) { ExceptionUtils.ThrowIfEmptyString(methodName, "methodName"); BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; MethodInfo methodInfo = type.GetMethod(methodName, flags); if (methodInfo == null) { throw new ArgumentException(string.Format("Did not find method \"{0}\" on type \"{1}\"", methodName, type.FullName)); } return(methodInfo); }
public static MemberInfo GetInstanceMember(Type objType, string memberName, bool includeInheritedMembers, bool includeNonPublicMembers) { ExceptionUtils.ThrowIfEmptyString(memberName, "memberName"); BindingFlags flags = BindingFlags.Instance | BindingFlags.Public; if (!includeInheritedMembers) { flags |= BindingFlags.DeclaredOnly; } if (includeNonPublicMembers) { flags |= BindingFlags.NonPublic; } PropertyInfo property = objType.GetProperty(memberName, flags); if (property == null) { FieldInfo field; if (includeInheritedMembers && includeNonPublicMembers) { field = GetFieldByName(objType, memberName); } else { field = objType.GetField(memberName, flags); } if (field == null) { throw new ArgumentException(string.Format("Did not find member \"{0}\" on type \"{1}\"", memberName, objType.FullName)); } return(field); } return(property); }
public static string SplitCamelCaseName(string camelCaseName, char separator) { ExceptionUtils.ThrowIfEmptyString(camelCaseName, "camelCaseName"); StringBuilder sb = new StringBuilder((camelCaseName.Length * 3) / 2); sb.Append(camelCaseName[0]); bool lastCharWasLower = false; bool lastCharWasNumber = false; bool twoOrMoreUpperChars = false; for (int i = 1; i < camelCaseName.Length; ++i) { char curChar = camelCaseName[i]; if (char.IsLetter(curChar)) { lastCharWasNumber = false; if (char.IsUpper(curChar)) { if (lastCharWasLower) { if (sb[sb.Length - 1] != separator) { sb.Append(separator); } twoOrMoreUpperChars = false; } else { twoOrMoreUpperChars = true; } sb.Append(curChar); lastCharWasLower = false; } else { if (twoOrMoreUpperChars) { sb.Insert(sb.Length - 1, separator); twoOrMoreUpperChars = false; } sb.Append(curChar); lastCharWasLower = true; } } else if (char.IsDigit(curChar)) { if (!lastCharWasNumber) { if (sb[sb.Length - 1] != separator) { sb.Append(separator); } } sb.Append(curChar); lastCharWasNumber = true; lastCharWasLower = true; twoOrMoreUpperChars = false; } else { sb.Append(curChar); lastCharWasLower = true; lastCharWasNumber = false; twoOrMoreUpperChars = false; } } return(sb.ToString()); }