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);
        }
Example #3
0
        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());
        }